selenium URL重定向检查

摘要:
有时您需要测试URL重定向是否正确。本文介绍了一种使用selenium测试URL重定向的方法。重定向的最直接表现是URL地址已更改。所有的主要想法都是检查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--

免责声明:文章转载自《selenium URL重定向检查》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇第九章 硬件抽象层:HALvue开发小结(下)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

如何记录selenium自动化测试过程中接口的调用信息

注: 以下内容引自https://www.cnblogs.com/hhudaqiang/p/6635494.html 上一篇博客,我写了python自动化框架的一些知识和粗浅的看法,在上一篇中我也给自己提出一个需求:如果记录在测试过程中接口的调用情况?提出这个需求,我觉得是有意义的。你在测试过程中肯定会遇到一些莫名其妙的问题,比如:web某个页面一直在刷进...

快速掌握Shell编程

(一)Shell编程概述 1.1 shell简述 Shell编程和JavaScript非常相似,Shell和JavaScript都是弱类型语言,同时也都是解释型语言。解释型语言需要解释器,JavaScript的解释器是浏览器,Shell脚本的解释器时bash,是一个shell、一个命令行用户接口。 1.2 bash简述 bash在执行或者解释脚本的时候,此...

nodeJS从入门到进阶二(网络部分)

一、网络服务器 1、http状态码 1xx: 表示普通请求,没有特殊含义 2xx:请求成功 200:请求成功 3xx:表示重定向 301 永久重定向 302 临时重定向 303 使用缓存(服务器没有更新过) 4xx:无法访问 403:无法访问 404:资源找不到 5xx:服务器有错 500:服务器代码有错 502:网关或代理服务器出错 503:服...

爬虫之Selenium模块

1.Selenium模块介绍   该模块最初是一个自动化测试模块,而在爬虫中使用它是为了解决requests无法直接执行JavaScript代码的问题   本质是驱动浏览器,完全模拟浏览器的操作,如跳转、输入、点击、下拉等   selenium支持的多种浏览器: from selenium import webdriver browser=webdrive...

微博第三方登陆请求授权出现错误码:21322(重定向地址不匹配)的解决方法

https://hostcoz.com/151.html 主题自带了微博登陆接口,很简单的去新浪微博开放平台创建了网页应用,然后把APP ID和 AppSecret填好后,以为大功告成后,轻车熟路地点击使用微博登陆,映入我眼前的是: 用微博帐号登录出错了!对第三方应用进行授权时出现错误,请您联系第三方应用的开发者:XXX 或者稍后再试。 错误码:213...

第七部分(一) 动态渲染页面爬取(Selenium的使用)

Ajax分析和抓取方式,是JavaScript动态渲染页面的一种情形,可使用 requests 或 urllib 爬取数据。JavaScript动态渲染的页面不是只有Ajax一种,比如中国青年网 http://news.youth.cn/gn/ 的分页部分由JavaScript生成的,不是原始的HTML代码,但是不包含Ajax请求。又比如ECharts的...