这是我的第一篇堆栈溢出帖子,所以请不要对我太客气!

我正在使用Selify来填写一个包含各种下拉列表的网页表单.我试图通过创建一个函数来查找元素,并使用"select_by_visible_text"函数 Select 值,从而实现这一点.

我创建了两个列表,一个列表包含元素,另一个列表包含需要在每个下拉列表中 Select 的值.

以下是我try 使用的函数:

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)

问题是,在它正确地 Select 了第一个参数后,它无法找到第二个参数的值,这会引发以下错误:

selenium.common.exceptions.NoSuchElementException: Message: Could not locate element with visible text: Semester Units

我花了几天时间确保列表中有正确的元素ID和正确的可见文本.正如您在上面的错误中看到的,脚本在查找该值时遇到了问题.我已经多次判断该元素以确保它是正确的文本,但我仍然收到相同的错误.

此外,我try 使用select_by_value Select 下拉选项,但仍然收到相同的错误.

我还try 使用隐式等待,但它仍然没有找到值.

推荐答案

问题是,您的函数试图将SELECTION_LIST中的所有 Select 应用于ELEMENT_LIST中的每个元素,而不是将每个元素与其对应的 Select 进行匹配.您应该使用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/

Python相关问答推荐

带有计数值的Pandas数据帧

如何从维基百科的摘要部分/链接列表中抓取链接?

使用Python Great Expectations和python-oracledb

在Python中使用一行try

如何观察cv2.erode()的中间过程?

更改Seaborn条形图中的x轴日期时间限制

Python无法在已导入的目录中看到新模块

如何用symy更新分段函数

通过仅导入pandas来在for循环中进行多情节

我必须将Sigmoid函数与r2值的两种类型的数据集(每种6个数据集)进行匹配,然后绘制匹配函数的求导.我会犯错

在Python中处理大量CSV文件中的数据

如何删除索引过go 的lexsort深度可能会影响性能?' &>

从收件箱中的列中删除html格式

无法在Docker内部运行Python的Matlab SDK模块,但本地没有问题

Plotly Dash Creating Interactive Graph下拉列表

Python Pandas获取层次路径直到顶层管理

如何在TensorFlow中分类多个类

在Python中调用变量(特别是Tkinter)

dask无groupby(ddf. agg([min,max])?''''

在matplotlib中使用不同大小的标记顶部添加批注