selenium简介
什么是Selenium?
- Selenium是最广泛使用的开源Web UI(用户界面)自动化测试套件之一。它最初由Jason Huggins于2004年开发,作为Thought Works的内部工具。 Selenium支持跨不同浏览器,平台和编程语言的自动化。
- Selenium可以轻松部署在Windows,Linux,Solaris和Macintosh等平台上。 此外,它支持iOS(iOS,Windows Mobile和Android)等移动应用程序的OS(操作系统)。
- Selenium通过使用特定于每种语言的驱动程序支持各种编程语言。Selenium支持的语言包括C#,Java,Perl,PHP,Python和Ruby。目前,Selenium Web驱动程序最受Java和C#欢迎。 Selenium测试脚本可以使用任何支持的编程语言进行编码,并且可以直接在大多数现代Web浏览器中运行。
- Selenium支持的浏览器包括Internet Explorer,Mozilla Firefox,Google Chrome和Safari。
- Selenium可用于自动化功能测试,并可与Maven,Jenkins和Docker等自动化测试工具集成,以实现持续测试。 它还可以与TestNG和JUnit等工具集成,以管理测试用例和生成报告。
如何下载selenium
- Windows下以管理员方式打开命令提示符,输入
pip install selenium
如下图:
- 安装成功后输入
pip list
可以查看到安装的selenium版本:
Selenium WebDriver功能特性
- 多浏览器支持: Selenium WebDriver支持各种Web浏览器,如Firefox,Chrome,Internet Explorer,Opera等等。它还支持一些非传统或罕见的浏览器,如HTMLUnit。
- 多编程语言支持: WebDriver还支持大多数常用的编程语言,如Java,C#,JavaScript,PHP,Ruby,Pearl和Python。 因此,用户可以基于自己的能力选择任何一种受支持的编程语言并开始构建测试脚本。
- 速度: 与Selenium Suite的其他工具相比,WebDriver的执行速度更快。与RC不同,它不需要任何中间服务器与浏览器通信; 此工具直接与浏览器通信。
- 简单命令: Selenium WebDriver中使用的大多数命令都易于实现。 例如,要使用以下命令在WebDriver中启动浏览器:
//java实现
WebDriver driver = new FirefoxDriver(); //(Firefox浏览器)
WebDriver driver = new ChromeDriver(); //(Chrome浏览器)
WebDriver driver = new InternetExplorerDriver(); //(Internet Explorer浏览器)
- WebDriver方法和类: WebDriver提供多种解决方案来应对自动化测试中的一些潜在挑战。WebDriver还允许测试人员通过动态查找器处理复杂类型的Web元素,如复选框,下拉列表和警报。
实例:使用selenium模拟登陆163邮箱。
注意点:
- Web应用中经常会遇到frame/iframe 表单嵌套页面的应用,WebDriver 只能在一个页面上对元素识别与定位,对于frame/iframe 表单内嵌页面上的元素无法直接定位。这时就需要通过switch_to.frame()方法将当前定位的主体切换为frame/iframe 表单的内嵌页面中
- 加载这个iframe需要一定时间,所以需要设一个等待直至获取到标签
- 163邮箱的账号密码区域的input标签的id是自动生成的,每次都不能用,所以不能用于定位标签,这里参考网上的一种写法直接通过find_element_by_name方法查找账号和密码标签即可。
作业代码:
from selenium import webdriver
from time import sleep
options = webdriver.ChromeOptions()
options.add_argument('disable-infobars')
jy = webdriver.Chrome()
jy.maximize_window()
jy.get('https://mail.163.com/')
sleep(3)
jy.switch_to.frame(jy.find_element_by_xpath("//iframe[starts-with(@id,'x-URS-iframe')]"))
jy.find_element_by_name("email").clear()
jy.find_element_by_name("email").send_keys('your user_name')
jy.find_element_by_name("password").clear()
jy.find_element_by_name("password").send_keys('your password')
jy.find_element_by_id("dologin").click()
sleep(10)
jy.close()