在循环中使用Selenium获取网页元素值的问题

0 投票
1 回答
29 浏览
提问于 2025-04-14 15:19

你好,我遇到了一个奇怪的问题,使用的是Selenium 4.18.1和Python 3.12.2,我不太明白。
我想通过循环所有网页元素来获取特定的值,代码如下:

loads = waste_collection_points_editing_page.get_loads()

actual_loads_values = []
    for i in loads:
        # time.sleep(1)
        values = i.text.split("\n")
        del values[2:]
        actual_loads_values.append(values)

但是当我这样做时,得到的值都是空列表。

我尝试在调试模式下做同样的事情,挺有意思的是,网页元素的列表被初始化了,当我在调试模式下的Python控制台中尝试获取这些值时,能够顺利获取到。
我尝试添加这一行代码:time.sleep(1),这样就能正常工作了,但我不太明白为什么。

有人能解释一下为什么我不使用time.sleep就无法获取这些值吗?是Selenium的速度问题还是其他什么原因?我刚开始学习使用Selenium进行自动化,想搞明白这个问题。

1 个回答

0

其实就是页面加载的时候需要一些时间。你可以使用WebDriverWait预期条件。WebDriverWait是最好的选择,我之前也遇到过同样的问题,它帮了我很多。

你可以看看这个链接。

https://selenium-python.readthedocs.io/waits.html

撰写回答