【发布时间】:2021-05-07 06:55:06
【问题描述】:
抱歉,无法共享数据。
我有 3 个下拉列表的过滤器,它们都使用 div 类共享相同的 id,当我尝试使用 select 时,我收到此错误“消息:选择仅适用于元素,而不适用于”
希望有人帮助我自动选择 3 个字段。
提前致谢
【问题讨论】:
标签: python selenium selenium-webdriver
抱歉,无法共享数据。
我有 3 个下拉列表的过滤器,它们都使用 div 类共享相同的 id,当我尝试使用 select 时,我收到此错误“消息:选择仅适用于元素,而不适用于”
希望有人帮助我自动选择 3 个字段。
提前致谢
【问题讨论】:
标签: python selenium selenium-webdriver
“消息:Select 仅适用于元素,不适用于”表示,
<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
【讨论】:
如果你有一个带有虚拟数据的例子会更好。据我了解,您试图通过它的 id 选择一个元素,但 id 对于一个元素来说必须是唯一的。你会想要给你的元素赋予相同的名称,而不是相同的 id。并使用 find_elements_by_name 方法调用它们,因为 find_element_by_id 只会返回具有相应 id 的第一个元素。文档here
【讨论】: