2015-07-13 53 views
0

我正在尋找這個小硒腳本的解決方案。當列表中出現超過1次的文字時,問題就會發生。我正在尋找與xpath命令[contains()。然後腳本停止。Selenium:如何找到確切的文本匹配,當有幾個文本發生

正如你看到我的腳本試圖使用CSS選擇器(未評論),但它無效。我已經看到一些解決方案,使用正則表達式與css選擇器與^和$,但我不知道它是如何工作的。

編輯:我正在尋找只選擇第三個元素「LIT」,因爲你看到有那麼多次LIT裏面列表阻止腳本。

這裏是片段的HTML

<div class="prodUnitCat"> 
<ul class="fixFacetZindex clearBoth" id="divChildrenCategoryFilter_0"> 
/ul> 
<ul data-lvlcat="2"> 
<li data-idcat="1000015739"><span>ACCESSOIRES LITERIE</span> (9)</li> 
<li data-idcat="1000015760"><span>ELEMENT DE LIT</span> (5)</li> 
<li data-idcat="1000015773"><span>LIT</span> (9)</li> 
<li data-idcat="1000015794"><span>LIT D'APPOINT</span> (2)</li> 
</ul> 
</div> 

,在這裏我的代碼

prod = db.select(sql) 
    for record in prod: 


     cat1  = record[10] 
     cat2  = record[11] 
     cat3  = record[12] 
     cat4  = record[13] 

     # loading check 
     WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_id(headerFieldID)) 


     # cat selection 
     driver.find_element_by_xpath(u"//span[contains(text(),'" + cat1 +"')]").click() 
     driver.find_element_by_xpath(u"//span[contains(text(),'" + cat2 + "')]").click() 
     #driver.find_element_by_css_selector("span[contains('" + cat2 +"')]").click() 
     driver.find_element_by_xpath(u"//span[contains(text(),'" + cat3 + "')]").click() 
     driver.find_element_by_xpath(u"//div[@id=\"categContent\"]/div[4]/ul/li/span[contains(text(),'" + cat4 + "')]").click() 
     loginButtonElement = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_xpath(loginButtonXpath)) 
     loginButtonElement.click() 
+1

預期結果是什麼?你想找什麼? – styvane

+0

哦,對不起,我試圖找到 LIT但我認爲那裏有幾個「LIT」的發生它不起作用 – Andronaute

+0

你是否得到任何錯誤與您當前的代碼?謝謝。 – alecxe

回答

1

使用//span[text()='" + cat3 +"'].。請勿使用包含關鍵字,因爲它會嘗試搜索子字符串LIT.如果你刪除了包含,那麼它將嘗試僅匹配整個單詞「LIT」並區分大小寫。

+0

它像一個魅力...感謝你。我會接受你的迴應 – Andronaute