zoukankan      html  css  js  c++  java
  • selenium URL重定向检查

    有时候需要测试URL重定向是否正确,本文介绍一种使用selenium测试URL重定向的方法。

    重定向的最直接表现是URL地址发生了变化,所有主要思路就是检查URL地址是否跳转成功。selenium检测URL变化可以使用expected_conditions 方法:

    from selenium.webdriver.support import expected_conditions as EC
    
    EC.url_changes(current_url) # 检查URL是否改变
    EC.url_to_be(new_url) # 检查重定向的URL
    EC.url_contains('text') # 检查URL是否包含text
    EC.url_matches() # 是否匹配
    EC.title_is('New page Title') # 检查标题
    EC.title_contains('text')
    

    可以使用WebDriverWait方法等待URL是否重定向成功,具体实现请看下面的示例:

    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium import webdriver
    
    class TestRedirect():
        def setup(self):
            self.driver = webdriver.Chrome()
            self.driver.get("http://192.168.0.1/")
            self.driver.implicitly_wait(10)
    
        def teardown(self):
            self.driver.quit()
    
        def test_redirect(self, url="http://www.baidu.com", redrect_url="http://www.baidu.com/err_noWan.html", redrect=True,
                          timeout=5):
    
            js = "window.open('%s')" % url
            self.driver.execute_script(js)
            windows = self.driver.window_handles
            self.driver.switch_to.window(windows[-1]) # 切换到新打开的窗口
    
            element = EC.url_changes(url)  # 判断是否重定向
    
            try:
                WebDriverWait(self.driver, timeout).until(element)
                flag1 = element(self.driver)
            except:
                flag1 = element(self.driver)
    
            assert flag1 == True
    
            element = EC.url_to_be(redrect_url)  # 判断是否符合
            try:
                WebDriverWait(self.driver, timeout).until(element)
                flag2 = element(self.driver)
            except:
                flag2 = element(self.driver)
    
            assert flag2 == True
    
            self.driver.close()  # 关闭新打开的窗口
            self.driver.switch_to.window(windows[0]) # 切回窗口
    
    --THE END--
  • 相关阅读:
    第二节:Java环境变量配置
    第一节:VS充当IIS的配置步骤(VS2017和VS2019)
    .Net进阶系列(21)-跨域请求
    02-Unity深入浅出(二)
    第十五节:Expression表达式目录树(与委托的区别、自行拼接、总结几类实例间的拷贝)
    01-Unity深入浅出(一)
    第十二节:SQLServer存储过程详解及EFCore调用
    Android 组件系列-----Activity的传值和回传值
    Access大数据高效分页语句
    C#清除HTML样式
  • 原文地址:https://www.cnblogs.com/hiyong/p/15504709.html
Copyright © 2011-2022 走看看