无法使用硒 python 在无序列表中选择列表项


I need to select a list item in an unordered list using selenium python. 
HTML:
<div class="ms-drop bottom" style="display: block;">
<ul style="max-height: 400px;">
<li class="ms-select-all">      
<label><input type="checkbox" data-name="selectAlls_osVer">
[Select all]
</label>    
</li>
<li class="" style="false">     
<label class=""><input type="checkbox" data-name="selectItems_osVer" value="KK">
<span style="">
KK 
</span>
</label>        
</li>
<li class="" style="false">
<label class=""><input type="checkbox" data-name="selectItems_osVer" value="KK_MR1">
<span style="">
KK_MR1 
</span>
</label>        
</li>
<li class="" style="false">
<label class=""><input type="checkbox" data-name="selectItems_osVer" value="KK_MR2">
<span style="">
KK_MR2 
</span>
</label>        
</li>
</ul>
</div>

Tried code:

unordered_list 是包含无序列表的变量。 os_version包含一些文本。说os_version="KK">

开始遍历无序列表中的列表项后,我们需要选中匹配项复选框。

unordered_list = driver.find_element_by_xpath("//*[@id='fixedHeadSearch']/td[7]/div/div/ul") 
list_items = unordered_list.find_elements_by_tag_name("li")
for list_item in list_items:
print(list_item.text)     
if list_item.text == os_version:
list_item.click()   

Expected:if text matches with list item perform click on it.
Actual:Not able to click on required list item.

使用以下Xpath选项单击标签文本为KK的输入复选框

os_version = "KK"
driver.find_element_by_xpath("//div[@class='ms-drop bottom']//ul//li[.//span[normalize-space(text())='"+ os_version + "']]//input").click()

或者你可以诱导WebDriverWaitelement_to_be_clickable()

os_version = "KK"
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//div[@class='ms-drop bottom']//ul//li[.//span[normalize-space(text())='"+ os_version + "']]//input"))).click()

您需要导入以下内容来执行上述代码。

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

尝试

driver.find_element_by_xpath("//*[@id='fixedHeadSearch']//ul/li[text()=" + os_version + "]").click()

最新更新