如何使用Selenium WebDriver等待重定向链进行结算,其中加载的最终页面不可预测?

时间:2017-11-15 07:11:54

标签: selenium redirect selenium-webdriver

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

正如您所提到的multiple redirection happening and finally the content page is loadedscript fails mainly due to the wait几乎是可能的。在这些情况下,我们需要将 ExplicitWait ,即 WebDriverWait expected_conditions 子句设置为以下内容:

Java:

  1. urlToBe

    wait.until(ExpectedConditions.urlToBe("https://www.facebook.com/"));
    
  2. urlContains

    wait4me.until(ExpectedConditions.urlContains("facebook"));
    
  3. urlMatches

    wait4me2.until(ExpectedConditions.urlMatches("my_regex"));
    
  4. Python:

    1. url_to_be

      WebDriverWait(driver, 10).until(EC.url_to_be("https://www.google.co.in/"))
      
    2. url_matches

      WebDriverWait(driver, 10).until(EC.url_matches("https://www.google.co.in/"))
      
    3. url_contains

      WebDriverWait(driver, 10).until(EC.url_contains("google"))
      
    4. url_changes

      WebDriverWait(driver, 10).until(EC.url_changes("https://www.google.co.in/"))