在 Python 中使用 Selenium 检查 URL 更改的最佳方法是什么?

新手上路,请多包涵

所以,我想做的是在特定网页上运行一个函数(与我的正则表达式匹配)。

现在我每秒都在检查它并且它有效,但我确信有更好的方法(因为它正在通过获取请求淹没该网站)。

 while flag:
    time.sleep(1)
    print(driver.current_url)
    if driver.current_url == "mydesiredURL_by_Regex":
        time.sleep(1)
        myfunction()

我想用 WebDriverWait 以某种方式做到这一点,但不确定如何做。

原文由 gyula 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 694
2 个回答

我想用 WebDriverWait 以某种方式做到这一点

确切地。首先,看看 内置的 Expected Conditions 是否可以解决这个问题:

  • title_is
  • title_contains

示例用法:

 from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
wait.until(EC.title_is("title"))
wait.until(EC.title_contains("part of title"))

如果没有,您始终可以创建 自定义预期条件 以等待 url 匹配所需的正则表达式。

原文由 alecxe 发布,翻译遵循 CC BY-SA 3.0 许可协议

这就是我最终实现它的方式。适合我:

 driver = webdriver.Chrome()
wait = WebDriverWait(driver, 5)
desired_url = "https://yourpageaddress"

def wait_for_correct_current_url(desired_url):
    wait.until(
        lambda driver: driver.current_url == desired_url)

原文由 Svetlana Levinsohn 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题