提问人:invader_zimmy 提问时间:11/16/2023 更新时间:11/16/2023 访问量:35
创建 Python 函数以使用 Selenium 选择多个下拉列表:无法找到具有可见文本的元素
Creating Python Functions to Select Multiple Drop Downs w/ Selenium: Could not locate element with visible text
问:
这是我的第一篇 Stack Overflow 帖子,所以请放轻松!
我正在使用 Selenium 填写包含各种下拉列表的 Web 表单。我试图通过创建一个函数来实现这一点,该函数可以查找元素,并使用该功能选择值。"select_by_visible_text"
我创建了两个列表,一个列表包含元素,另一个列表包含需要在每个下拉列表中选择的值。
以下是我尝试使用的功能:
def dropdown_select(element_list, selection_list):
for element in element_list:
find_element = driver.find_element(By.ID, element)
find_element.click()
for selection in selection_list:
select = Select(find_element)
select.select_by_visible_text(selection)
问题是,在正确选择第一个下拉列表后,它找不到第二个下拉列表选择的值,从而引发以下错误:
selenium.common.exceptions.NoSuchElementException: Message: Could not locate element with visible text: Semester Units
在过去的几天里,我花了几天时间确保列表中有正确的元素 ID 和正确的可见文本。正如您在上面的错误中看到的那样,脚本无法找到该值。我已经多次检查了该元素以确保它是正确的文本,但我仍然遇到相同的错误。
此外,我尝试使用下拉选项,但仍然收到相同的错误。select_by_value
我也尝试使用隐式等待,但它仍然没有找到值。
答:
0赞
Gabriel Ramuglia
11/16/2023
#1
问题在于,您的函数尝试将selection_list中的所有选择应用于element_list中的每个元素,而不是将每个元素与其相应的选择进行匹配。您应该使用 zip 同时遍历这两个列表。
请尝试以下操作:
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
def dropdown_select(element_list, selection_list):
for element, selection in zip(element_list, selection_list):
select_element = Select(driver.find_element(By.ID, element))
select_element.select_by_visible_text(selection)
资料来源:我的文章 https://ioflood.com/blog/python-zip-function/
评论
1赞
invader_zimmy
11/16/2023
明白了,我现在就去看看。谢谢!
1赞
invader_zimmy
11/17/2023
再次感谢@GabrielRamuglia它就像一个魅力!你的文章帮了大忙!
0赞
Gabriel Ramuglia
11/17/2023
棒!很高兴听到它!
评论