在循环中使用Selenium获取网页元素值的问题
你好,我遇到了一个奇怪的问题,使用的是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是最好的选择,我之前也遇到过同样的问题,它帮了我很多。
你可以看看这个链接。