在网页完全加载之前更改网址时拦截

时间:2015-02-12 15:51:50

标签: python selenium

使用selenium在浏览器中更改网址时是否可以捕获事件?

以下是我的情景:

  1. 我加载了我的网站 test.com
  2. 加载所有静态文件后,执行其中一个js文件时,我被重定向(不确定如何)到另一个页面 redirect-one.test.com/blah
  3. 我的浏览器获取网址 redirect-one.test.com/blah 并得到307响应,转到 redirect-two.test.com/blahblah
  4. 在这里,我的浏览器收到最终的302,转到 final.test.com /
  5. final.test.com / 的页面已加载,在此结束时,selenium使我能够搜索元素等等...

    我希望每次重定向时能够拦截(及时发生)。

    之后,我仍然需要做一些其他更适合硒的步骤:

    1. 输入我的用户名和密码
    2. 测试一些功能
    3. 退出
    4. 以下是我试图拦截第一次重定向的示例:

      from selenium import webdriver
      from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
      from selenium.webdriver.support.ui import WebDriverWait
      
      
      def url_contains(url):
          def check_contains_url(driver):
              return (url in driver.current_url)
          return check_contains_url
      
      driver = webdriver.Remote(
              command_executor='http://127.0.0.1:4444/wd/hub',
              desired_capabilities=DesiredCapabilities.FIREFOX)
      
      driver.get("http://test.com/")
      
      try:
          url = "redirect-one.test.com"
          first_redirect = WebDriverWait(driver, 20).until(url_contains(url))
          print("found first redirect")
      finally:
          print("move on to the next redirect...."
      

      使用硒甚至可以吗?

      我无法改变网站的行为以及它的构建原因是因为我无法绕过的SSO机制。

      我意识到我指定了python,但我对其他语言的工具持开放态度。

1 个答案:

答案 0 :(得分:0)

Selenium不是这个的工具。浏览器遇到的所有重定向都由浏览器以Selenium不允许您检查的方式处理。

您可以使用urllib2执行检查,或者如果您更喜欢理智的界面,请使用requests