【问题标题】:Not able to select a list item in an unordered list using selenium python无法使用 selenium python 在无序列表中选择列表项
【发布时间】:2019-10-23 00:17:22
【问题描述】:
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.

【问题讨论】:

    标签: selenium selenium-webdriver selenium-chromedriver


    【解决方案1】:

    使用以下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()
    

    或者你可以诱导WebDriverWait和element_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
    

    【讨论】:

      【解决方案2】:

      试试

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-13
        • 1970-01-01
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        • 2018-01-25
        • 2022-12-15
        • 1970-01-01
        相关资源
        最近更新 更多