当前位置: 首页 > 知识库问答 >
问题:

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

齐冥夜
2023-03-14
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.

共有2个答案

暨成双
2023-03-14

尝试

driver.find_element_by_xpath("//*[@id='fixedHeadSearch']//ul/li[text()=" + os_version + "]").click()
费学
2023-03-14

使用以下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
 类似资料:
  • 我正在尝试自动选择硒离子中的下拉列表,但我无法使其正常工作。 基本上,我在菜单项上记录了一次单击,这会显示下拉菜单,但每当我在其中一个选项上使用单击命令时,它都会关闭菜单,而不会选择新选项。我也尝试了select命令,但我一直得到“指定元素不是select” 任何想法?

  • 问题内容: 有谁知道为什么我的Safari没有在选择列表中填充?在FF中工作正常,请告诉我该怎么做。doctype有什么问题吗? 码: 我正在使用以下文档类型; 问题答案: 即使W3规范不允许在选择框中填充,无论出于何种原因,Webkit浏览器(Safari,Chrome)都不支持填充。取而代之的是,您可以删除和,而是使用相同的金额添加到选择框。 从您的评论示例中:

  • 我试图从2个Ajax下拉字段中选择一个特定的值。第一个下拉选项列表打开,但没有选择选项,这就是为什么第二个下拉列表没有绑定并且错误发生的原因 org.openqa.selenium.nosuchelementException:找不到Element:option[value=“111”]。 请帮帮我..我是硒的新手 这是我的代码..

  • 我试图在Haskell中编写一个函数,它可以做以下操作:输入一个整数列表,对于这些整数,使用map,有一个函数应用于它们,返回一个无限的整数列表。然后,我想使用union将foldr应用于列表,这样结果将是列表中这些列表的union。 现在的问题是,当我以10‘函数’[1,2]为例进行计算时,它会首先计算1的无限列表,因为它是一个无限列表,它永远不会对2进行计算。因此,它只返回输入列表中第一个元素

  • 我试图从下拉菜单中选择一个选项,然后单击“搜索”,但我无法获得“选择”标签。 我抓取的HTML如下: 我想选择的选项是: 我使用的代码如下: 所以,我试图以不同的方式获得“选择”标签,我得到了不同的问题。 例如: 第一次尝试) 我得到: 第二次尝试) 我得到: 第三次尝试) 我得到一个空列表: 第 4 次尝试) 我得到一个空列表: 第5次尝试) 我得到: 有人知道如何解决这个问题吗?提前感谢!

  • 在这里,我可以绑定多选择的选择列表。当我试图保存时,我没有得到一个错误,但它没有保存官员信息。 下面是试图加载页面时出现的错误 处理请求时发生未处理的异常。SQLException:无效的列名'OfficerID'。Microsoft.data.sqlclient.sqlCommand+<>c.b__164_0(任务结果)

  • 我正在使用cucumber with capybara来实现web应用程序的自动化。我必须从下拉列表中选择一个值,但很多时候我会得到一个错误,比如;“参数类型字符串错误(应为数组)(TypeError)” 我试过用:1。

  • 我知道对无限列表进行排序是不可能的,但我正试图为n个数的倍数的无限递增列表写一个定义。 我已经有这个功能了 它返回n的无限倍数列表。但现在我想构建一个函数,给定一个返回列表中所有数字的倍数的无限递增列表。所以函数