selenium - 如何使用 Selenium WebDriver 等待重定向链在最终页面加载不可预测的情况下解决?

标签 selenium url selenium-webdriver redirect webdriverwait

我想自动化一个脚本来验证网页中的某些内容。

登录页面在登陆应用程序页面之前重定向了几次,这些重定向偶尔会导致问题。这个问题肯定与时间有关。那么 webdriver 如何等到最终页面完全加载或稳定?

典型的解决方案是等待目标页面上的元素变为可用。不幸的是,我们使用了 100 多个唯一网址,因此没有可预测的着陆页。

那么如何实现一个 ExpectedCondition 来等待应用程序在重定向方面稳定下来呢?

主要议程是,我有一组 URL,我想通过检查其中的内容来验证所有这些 URL 是否有效。所有这些都是我的组织合作的学习内容的直接 URL,例如 Lynda、skillsoft 等。因此,当我们首先通过自动脚本启动这些 URL 时,它会询问身份验证(我的组织凭据),然后它会重定向到相应的站点。在这些重定向期间,在某些情况下会发生多次重定向,最后加载内容页面。这就是场景。我猜我的脚本失败主要是因为等待

最佳答案

正如你提到的 multiple redirection happening and finally the content page is loadedscript fails mainly due to the wait很有可能。在这些情况下,我们需要诱导 ExplicitWait WebDriverWait expected_conditions 子句设置为以下任一:

java :

  • urlToBe :检查当前 url 的期望是完全匹配。
    new WebDriverWait(driver, 10).until(ExpectedConditions.urlToBe("https://www.facebook.com/"));
    
  • urlContains : 检查当前 url 是否包含区分大小写的子字符串的期望。
    new WebDriverWait(driver, 10).until(ExpectedConditions.urlContains("facebook"));
    
  • urlMatches : 检查当前 url 模式的期望是预期模式必须完全匹配。
    new WebDriverWait(driver, 10).until(ExpectedConditions.urlMatches("my_regex"));
    


  • Python :
  • url_to_be :期望当前页面的 URL 是一个特定的 url。
    WebDriverWait(driver, 10).until(EC.url_to_be("https://www.google.co.in/"))
    
  • url_matches :期望 URL 匹配特定的正则表达式。
    WebDriverWait(driver, 10).until(EC.url_matches("my_regex"))
    
  • url_contains :期望当前页面的 URL 包含特定文本。
    WebDriverWait(driver, 10).until(EC.url_contains("google"))
    
  • url_changes : 检查当前 url 的期望,它不能完全匹配。
    WebDriverWait(driver, 10).until(EC.url_changes("https://www.google.co.in/"))
    
  • 关于selenium - 如何使用 Selenium WebDriver 等待重定向链在最终页面加载不可预测的情况下解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47301396/

    相关文章:

    Python Selenium 一个隐藏框架,有时会与 java 脚本断言一起出现

    selenium - 无法通过 Selenium webdriver 中的 By.link 文本找到元素

    python - 如何处理TypeError : __call__() takes at least 2 arguments (1 given)?

    php - URL 重写查询数据库?

    url - bit.ly - API 统计跟踪

    java - 无法使用 Selenium WebDriver 单击 <div> 创建的下拉菜单

    asp.net-mvc - MVC下Forms Authentication中ReturnUrl内保留Url Fragment

    java - 如何使用 Firefox 的 selenium Webdriver 处理 Shadow-dom 元素

    selenium - Firefox 47.0 在启动 selenium webdriver 时崩溃

    java - Selenium,通过其 xpath 在特定 div 中找到具有特定文本的跨度?