Selenium - Python设置超时查找元素

问题描述 投票:2回答:1

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

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

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

链接1

LINK2

...

链接N.

第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不会永远搜索那些未发现的链接?

python selenium
1个回答
2
投票

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

背景:https://selenium-python.readthedocs.io/waits.html#explicit-waits

© www.soinside.com 2019 - 2024. All rights reserved.