【问题标题】:How to increase the speed of find_elements_by_xpath如何提高 find_elements_by_xpath 的速度
【发布时间】:2020-09-17 10:25:12
【问题描述】:

我正在做一个硒项目。在项目中,我打开多个沃尔玛页面并检查 div 内是否有nav。如果nav 存在,请执行其他操作继续到下一页。

现在如果导航存在于页面中,程序能够定位导航。但如果导航不存在,则程序需要很长时间才能继续执行代码。

有没有办法提高程序搜索代码的速度。

这是我的代码

nav_button_path = "//div[@class='modal modal--active-fill responsive-modal prod-fulfillmentOptionsModal prod-AccessFulfillmentModal prod-AccessSlidePanel']//nav[@class='persistent-subnav']"
nav_button = driver.find_elements_by_xpath(nav_button_path)

if not nav_button:
    ...

else:
    ...

在上面的代码中,如果找到导航,else condition 就会运行。这运行得很快。但是if condition需要很长时间才能运行,因为如果导航不存在,程序需要很长时间才能在网页中搜索导航。

提前致谢

【问题讨论】:

  • 您可以尝试更新 xpath 值以提高性能 - 如果您发布 HTML 代码,我们可能会尝试帮助您。
  • @AlinStelian walmart link。请点击More delivery & pickup options并检查开发者控制台

标签: python selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

我认为延迟的原因是您使用的隐式等待。它应该可以解决您的问题:

driver.implicitly_wait(0)

【讨论】:

  • 我应该在find_elements_by_xpath之后添加这个吗?您能解释一下这是如何工作的吗?
  • 我试过这个。但这似乎并没有减少时间
  • @Sashaank 您需要在创建驱动程序后进行设置。默认值为 0,因此仅当您设置一些值时它才会影响您的测试。我建议你这样做。
  • @Sashaank 尝试简化定位器,例如:.modal-content .persistent-subnav
  • 我试过你说的。问题是我最初在代码的其他地方添加了driver.implicitly_wait(10)。这现在有效。非常感谢
猜你喜欢
  • 2015-12-20
  • 2018-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-02
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多