使用Python的Selenium - 如果找不到元素,则WebElement.find_element_by_xpath()非常慢

时间:2017-10-27 14:12:06

标签: python selenium xpath selenium-webdriver

在Python 3.4中使用Selenium WebDriver。

我正在编写一个scraper,并使用以下方法在XPath中检索相对于非root祖先的元素:

def grab_and_clean_selenium(target_path, ancestor_element):
    try:
        target_element = ancestor_element.find_element_by_xpath(target_path)
    except Exception as e:
        pass

如果找到元素,这可以按预期工作(并且非常快)。但是,如果找不到该元素(我正在搜索相当数量的可选元素),那么处理它似乎需要相当多的时间。

例如,前10个元素都存在于页面内,并且总共在0.5秒内被刮掉。找不到 的每个元素大约需要1秒钟,这会增加刮刀按指数运行的总时间。

为什么搜索未找到的元素代价太高,有没有办法减少这段时间?

我在isElementPresent is very slow in case if element does not exist.

看到了非常相似的问题

但是,接受的解决方案是将隐式等待设置为0,设置后没有影响:

driver.implicitly_wait(0) 

这是有道理的,因为默认情况下隐式等待已经为0。

有什么建议吗?

编辑:有问题的XPath是:

  • ancestor_element:" // [@ style =' font-size:18px']"
  • target_path:" .// table [@width =' 450'] [2] // tr [1] / td"

0 个答案:

没有答案
相关问题