【问题标题】:Unable to select from 3 dropdown list using div class - python selenium无法使用 div 类从 3 个下拉列表中进行选择 - python selenium
【发布时间】:2021-05-07 06:55:06
【问题描述】:

抱歉,无法共享数据。

我有 3 个下拉列表的过滤器,它们都使用 div 类共享相同的 id,当我尝试使用 select 时,我收到此错误“消息:选择仅适用于元素,而不适用于”

希望有人帮助我自动选择 3 个字段。

提前致谢

【问题讨论】:

    标签: python selenium selenium-webdriver


    【解决方案1】:

    “消息:Select 仅适用于元素,不适用于”表示,

    1. 首先,上述异常意味着,您用于选择下拉值的选择硒类仅适用于带有如下选择标签的 HTML 结构。它不适用于 div/ul/li 或任何其他标签。

    <select name="cars" id="cars">
      <option value="volvo">Volvo</option>
      <option value="saab">Saab</option>
      <option value="mercedes">Mercedes</option>
      <option value="audi">Audi</option>
    </select>

    2) 必须使用 Selenium 点击来处理带有 div 标签的下拉菜单。请参阅stackoverflow 链接,其中包含 div 标签类型下拉列表的解决方案

    3)对于每个属性都相似的元素,可以使用下面的xpath,这里xpath中的'2'表示选择第二个元素,类似'3'表示第三个元素,依此类推

    driver.find_element_by_xpath("(//div[@class='class name'])[2]")
            or
    driver.find_element_by_xpath("(//div[@class='class name'])[position()=2]")
           or
    '''call find elements method instead of find element which will fetch all the elements 
     with the same class and loop through each element and perform action as below'''
    all_div = driver.find_elements_by_xpath("//div[@class='class name']")
    for div in all_div :
      #action to perform on each element of div
    

    【讨论】:

      【解决方案2】:

      如果你有一个带有虚拟数据的例子会更好。据我了解,您试图通过它的 id 选择一个元素,但 id 对于一个元素来说必须是唯一的。你会想要给你的元素赋予相同的名称,而不是相同的 id。并使用 find_elements_by_name 方法调用它们,因为 find_element_by_id 只会返回具有相应 id 的第一个元素。文档here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-13
        • 1970-01-01
        • 2015-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-10
        相关资源
        最近更新 更多