gpt4 book ai didi

python - Selenium - Python 在查找元素时设置超时

转载 作者:太空宇宙 更新时间:2023-11-04 02:49:17 25 4
gpt4 key购买 nike

我正在从 website 收集链接.我遍历它拥有的页面,并在每个页面上检索链接:

links = driver.find_elements_by_xpath('//*[contains(@class, "m_rs_list_item_main")]/div[1]/div[1]/a')

现在...有时网站会失败并且不会显示它应该显示的链接。例如,它通常说:

link1

link2

...

link N

page M

然后突然有一个页面,比方说 M+1,根本不显示任何链接。然后代码卡在上面的行 (links = ...)“寻找”链接。我用计数器计算链接数,以查看每个页面中有多少个链接:

if numlinks_inrun == 0:
print('nolinks')

现在,我从来没有打印过消息“nolinks”。当我按 CTRL+C 中止终端中的程序时,我在终端中得到了回溯:

links = driver.find_elements_by_xpath('//*[contains(@class, "m_rs_list_item_main")]/div[1]/div[1]/a')
File "/home/vladimir/anaconda3/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 305, in find_elements_by_xpath
return self.find_elements(by=By.XPATH, value=xpath)

这就是为什么我知道程序会卡在这个点上的原因。有谁知道如何设置超时,以便 selenium 不会永远搜索那些不存在的链接?

最佳答案

这似乎是元素没有及时加载以供 selenium 定位的问题。您可能必须考虑添加一个显式等待,您可以使用它来设置 selenium 定位指定页面元素之前的秒数。这就是为什么您看不到“nolinks”输出的原因,因为它出错了。

上下文: https://selenium-python.readthedocs.io/waits.html#explicit-waits

关于python - Selenium - Python 在查找元素时设置超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44330616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com