软件测试任务驱动教程 课件 模块4 使用Selenium 实现Web 自动化测试_第1页
软件测试任务驱动教程 课件 模块4 使用Selenium 实现Web 自动化测试_第2页
软件测试任务驱动教程 课件 模块4 使用Selenium 实现Web 自动化测试_第3页
软件测试任务驱动教程 课件 模块4 使用Selenium 实现Web 自动化测试_第4页
软件测试任务驱动教程 课件 模块4 使用Selenium 实现Web 自动化测试_第5页
已阅读5页,还剩160页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模块4使用Selenium实现Web自动化测试软件测试任务驱动教程名校名师精品系列教材人民邮电出版社目录导航4.1Selenium简介4.3搭建Selenium自动化测试环境4.5Selenium定位页面元素4.2SeleniumWebDriver简介4.4SeleniumIDE的下载及使用4.6JavaScript常用的定位方法4.8SeleniumWebDriver的高级应用4.7SeleniumWebDriver的常用操作4.10PO设计模式简介测试实战4.9Selenium的二次封装4.11Selenium自动化测试

过程常见问题的解决方法1.什么是SeleniumSelenium是一个以开源方式提供的Web应用程序自动化测试工具集,它具备框架级别的功能,支持测试脚本的编写、执行和管理,是构建自动化测试体系时的重要工具。Selenium支持的浏览器包括Chrome、Firefox、Safari、Opera、Edge、IE(7、8、9、10、11)等,支持的开发语言有Python、Java、C#、PHP、Ruby、Groovy、Perl等。Selenium集成开发环境Selenium远程控制SeleniumWebDriver(客户端API)SeleniumGrid1.什么是SeleniumSeleniumIDE是嵌入浏览器中的一个插件,用于实现简单浏览器操作录制和回放功能。SeleniumIDE录制的脚本可以转换为多种语言,从而帮助用户实现快速开发脚本。其主要应用场景为:快速地创建Bug重现场景。SeleniumRC支持多种不同语言编写的自动化脚本测试,通过SeleniumRC服务器作为代理服务器来访问应用,从而达到测试的目的。SeleniumRC分为ClientLibraries和SeleniumServer。ClientLibraries库主要用于编写测试脚本,以控制SeleniumServer的库。SeleniumServer负责控制浏览器行为,它包括3个部分:Core、Launcher和HttpProxy。SeleniumIDESeleniumRC2.自动化测试模型的分类即单纯地模拟用户完整的操作场景。其通过录制或编写应用程序的操作步骤而产生相应的线性脚本,每个脚本相对独立,不产生依赖与调用。线性测试模块化测试与类库在线性测试的基础上,把重复的操作封装成公共模块,当测试过程中需要用到这些操作时,直接调用模块即可,减少了不必要的操作,提高了测试用例的可维护性。模块化测试与类库为实现数据驱动测试,需将所需测试数据进行参数化,并通过多种方式对这些参数化数据进行存储与管理,以便在测试过程中灵活调用。数据驱动测试关键字驱动测试的框架(如RobotFramework)的基本工作是将测试用例分为4部分:测试步骤、测试步骤中的测试对象、测试对象执行的动作、测试对象需要的数据。关键字驱动测试分为4类目录导航4.1Selenium简介4.3搭建Selenium自动化测试环境4.5Selenium定位页面元素4.2SeleniumWebDriver简介4.4SeleniumIDE的下载及使用4.6JavaScript常用的定位方法4.8SeleniumWebDriver的高级应用4.7SeleniumWebDriver的常用操作4.10PO设计模式简介测试实战4.9Selenium的二次封装4.11Selenium自动化测试

过程常见问题的解决方法4.2SeleniumWebDriver简介WebDriver允许用户在各种不同的浏览器上进行测试,而不仅仅是Chrome或Firefox。WebDriver支持多种Web浏览器及其版本,涵盖所有传统浏览器以及部分特殊浏览器,如HtmlUnit浏览器。WebDriver支持基于Web的移动测试,通过AndroidDriver和iPhoneDriver实现相关功能。对于大多数刚起步的自动化测试团队,Selenium是灵活且可扩展的选择。SeleniumWebDriver是一套开源的API集合,专门设计用于自动化测试Web应用程序。优势缺点SeleniumWebDriver没有开箱即用的报告功能,也没有开箱即用的上传特性文件的方法。目录导航4.1Selenium简介4.3搭建Selenium自动化测试环境4.5Selenium定位页面元素4.2SeleniumWebDriver简介4.4SeleniumIDE的下载及使用4.6JavaScript常用的定位方法4.8SeleniumWebDriver的高级应用4.7SeleniumWebDriver的常用操作4.10PO设计模式简介测试实战4.9Selenium的二次封装4.11Selenium自动化测试过

程常见问题的解决方法4.3搭建Selenium自动化测试环境首先打开Windows10操作系统的命令提示符窗口,然后在该窗口中输入以下命令:#……省略文件manage.py的代码按【Enter】键执行该命令,升级pip版本,命令的执行过程如图所示。1.升级pip版本4.3搭建Selenium自动化测试环境通过Python官网下载最新版的Python,下载完成后进行安装即可。pip3installSelenium#或pipinstallSelenium2.下载与安装最新版的Python在Windows10操作系统的命令提示符窗口输入以下命令下载与安装Selenium最新版本。3.下载与安装Selenium最新版本pip3installrequests在Windows10操作系统的命令提示符窗口输入以下命令安装requests模块。4.安装requests模块4.3搭建Selenium自动化测试环境5.查看Chrome浏览器的当前版本在级联菜单中选择“关于GoogleChrome”选项在“关于Chrome”窗口中查看Chrome的当前版本4.3搭建Selenium自动化测试环境6.下载与解压Chrome浏览器驱动程序Web端浏览器经常需要更新,虽然可以设置不自动更新,但是有时由于出现漏洞等原因不得不更新。运行测试用例时发现当前版本的Chrome浏览器驱动程序ChromeDriver已经不能支持驱动最新的Chrome浏览器,这时候就需要更新ChromeDriver。(2)将驱动程序拷贝到到指定文件夹中,覆盖上版本的chromedriver.exe(3)使用命令方式下载与安装浏览器驱动程序(1)通过百度搜索,找到对应的Chromedriver,然后下载与解压缩目录导航4.1Selenium简介4.3搭建Selenium自动化测试环境4.5Selenium定位页面元素4.2SeleniumWebDriver简介4.4SeleniumIDE的下载及使用4.6JavaScript常用的定位方法4.8SeleniumWebDriver的高级应用4.7SeleniumWebDriver的常用操作4.10PO设计模式简介测试实战4.9Selenium的二次封装4.11Selenium自动化测试过程常见问题的解决方法4.4SeleniumIDE的下载及使用选择“SeleniumIDE下载选项”选项将下载的文件拖曳到“扩展程序”窗口1.下载SeleniumIDE的Chrome浏览器插件2.SeleniumIDE插件的使用4.4SeleniumIDE的下载及使用单击Chrome浏览器右上角的“扩展程序”按钮,在“扩展程序”对话框中单击“SeleniumIDE”按钮,然后就会打开SeleniumIDE的初始界面。4.4SeleniumIDE的下载及使用在PyCharm

集成开发环境中,创建名为“SeleniumTestDemo”的项目,在该项目根文件夹下创建文件seleniumTestDemo01.py。在文件中编写打开Chrome浏览器并访问百度网站的代码,如下所示:【示例】测试打开Chrome浏览器并访问百度网站运行程序文件seleniumTestDemo01.py,会打开Chrome浏览器,并访问百度网站。fromseleniumimportwebdriverdriver=webdriver.Chrome()driver.get('')目录导航4.1Selenium简介4.3搭建Selenium自动化测试环境4.5Selenium定位页面元素4.2SeleniumWebDriver简介4.4SeleniumIDE的下载及使用4.6JavaScript常用的定位方法4.8SeleniumWebDriver的高级应用4.7SeleniumWebDriver的常用操作4.10PO设计模式简介测试实战4.9Selenium的二次封装4.11Selenium自动化测试过程常见问题的解决方法4.5.1新老版本Selenium的元素定位方法的区别新版本Selenium4.0只能使用find_element()方法进行元素定位。例如:driver.find_element(By.ID,"kw").send_keys("python")老版本Selenium3.0还可以使用find_element_by_id()方法进行元素定位。例如:driver.find_element_by_id('kw').send_keys("python")find_element_by_id()方法在Selenium4.0中不能使用了,该版本不再支持老版本写法,运行老版本写法的元素定位方法会出现错误。4.5.2Selenium中单个元素定位方法页面元素有一个id属性,可以使用该属性来定位元素进而实现对应操作。语法格式:driver.find_element(By.ID,value)示例代码:driver.find_element(By.ID,'kw')find_element()方法的示例代码中的第1个参数By.ID表示定位属性为id,第2个参数表示id属性值为kw。1.通过id属性定位元素4.5.2Selenium中单个元素定位方法在项目SeleniumTestDemo

根文件夹下创建Python文件seleniumTestDemo02.py,并在该文件中输入以下代码:【示例】测试在百度首页搜索“量子计算机”#导入类库fromseleniumimportwebdriverfrommon.byimportBy#调用方法Chrome()获取浏览器驱动,Chrome()必须以大写字母开头driver=webdriver.Chrome()#访问百度网站driver.get('')#使用find_element(By.ID,value)方法定位,在百度首页的搜索框中输入“量子计算机”driver.find_element(By.ID,'kw').send_keys('量子计算机')#单击“百度一下”按钮driver.find_element(By.ID,'su').click()time.sleep(5)#driver.close()关闭驱动,driver.quit()退出驱动,一般建议使用driver.quit()driver.quit()4.5.2Selenium中单个元素定位方法页面元素有一个name属性,可以使用该属性来定位元素进而实现对应操作。语法格式:driver.find_element(By.NAME,value)示例代码:driver.find_element(By.NAME,'wd').find_element()方法示例代码的第1个参数By.NAME表示使用name定位方法,第2个参数表示取name的值为wd。2.通过元素的name属性定位元素4.5.2Selenium中单个元素定位方法在项目SeleniumTestDemo

根文件夹下创建Python文件seleniumTestDemo03.py,并在该文件中输入以下代码:【示例】测试在百度首页搜索“人工智能”#导入模块中的类库fromtimeimportsleepfromseleniumimportwebdriverfrommon.byimportBydriver=webdriver.Chrome()driver.get('')#使用find_element(By.NAME,value)方法定位driver.find_element(By.NAME,'wd').send_keys('人工智能')driver.find_element(By.ID,'su').click()driver.quit()4.5.2Selenium中单个元素定位方法语法格式:driver.find_element(By.CLASS_NAME,value)find_element()方法的第1个参数By.CLASS_NAME表示使用class定位方法,第2个参数给出class的值。3.通过元素class_name类名定位元素页面元素一般都有class属性,前端开发者会用其来分类、批量添加样式,所以页面元素的class属性可能不是唯一的标识。使用时可以通过find_elements()方法来获取页面元素的class属性。4.5.2Selenium中单个元素定位方法在项目SeleniumTestDemo

根文件夹下创建Python文件seleniumTestDemo04.py,并在该文件中输入以下代码:【示例】测试在百度首页搜索“Python”fromtimeimportsleepfromseleniumimportwebdriverfrommon.byimportBy#打开浏览器driver=webdriver.Chrome()#请求百度搜索driver.get('/')driver.find_element(By.CLASS_NAME,'s_ipt').send_keys('Python')#单击百度一下driver.find_element(By.CLASS_NAME,'s_btn').click()sleep(5)driver.quit()4.5.2Selenium中单个元素定位方法在项目SeleniumTestDemo

根文件夹下创建Python文件seleniumTest-Demo05.py,并在该文件中输入以下代码:【示例】测试在CSDN网站单击第1个和第2个分类#……省略文件引入模块的代码driver=webdriver.Chrome()driver.get('/')#单击第1个分类driver.find_elements(By.CLASS_NAME,'navigation-right')[0].click()#等待3ssleep(3)#单击第2个分类driver.find_elements(By.CLASS_NAME,'navigation-right')[1].click()4.5.2Selenium中单个元素定位方法语法格式:driver.find_element(By.TAG_NAME,value)find_element()方法的第1个参数By.TAG_NAME表示使用tag定位方法,第2个参数则给出tag属性值。4.通过元素的TAG_NAME定位元素HTML由标签组成,一个标签就是一个元素,tag是页面中的一个标签,所以它通常不会是唯一的,要使用find_elements()来获取。4.5.2Selenium中单个元素定位方法在浏览器中打开CSDN网站,单击“头条新闻”,按【F12】键查看CSDN的HTML代码,发现头条新闻的分类元素标签的属性值是dl。在项目SeleniumTestDemo

根文件夹下创建Python文件seleniumTestDemo06.py,并在该文件中输入以下代码:【示例】测试在CSDN网站单击头条新闻#……省略文件引入模块的代码driver=webdriver.Chrome()driver.get('/')driver.find_elements(By.TAG_NAME,'dl')[0].click()4.5.2Selenium中单个元素定位方法CSS与XPath一样,可以定位页面中的任何元素。在浏览器的“开发者工具”界面使用“copyselector”命令可以获取对应元素的CSS选择器。语法格式:driver.find_element(By.CSS_SELECTOR,value)find_element()方法的第1个参数By.CSS_SELECTOR表示使用CSS定位方法,第2个参数给出元素的CSS选择器。5.通过元素的CSS选择器定位元素4.5.2Selenium中单个元素定位方法在浏览器中打开CSDN网站,单击“CSDN指数”元素,按【F12】键打开浏览器的“开发者工具”界面,使用“copyselector”获取到该元素的CSS选择器为:#www-home-right>div.www-home-silde

>div.ContentBlock>div:nth-child(1)>div>span。在项目SeleniumTestDemo

根文件夹下创建Python文件seleniumTestDemo07.py,并在该文件中输入以下代码:【示例】测试在CSDN网站单击“CSDN指数”#……省略文件引入模块的代码driver=webdriver.Chrome()driver.get('/')driver.find_element(By.CSS_SELECTOR,'#www-home-right>div.www-home-silde>

div.ContentBlock

>div:nth-child(1)>div>span').click()4.5.2Selenium中单个元素定位方法在项目SeleniumTestDemo

根文件夹下创建Python文件seleniumTestDemo08.py,并在该文件中输入以下代码:【示例】使用“input+id名称”定位方法测试在百度首页搜索“Python”4.5.2Selenium中单个元素定位方法在项目SeleniumTestDemo

根文件夹下创建Python文件seleniumTest-Demo09.py,并在该文件中输入以下代码:【示例】分别使用模糊定位和精准定位测试在百度首页搜索“Python”4.5.2Selenium中单个元素定位方法XPath是XML路径定位器,一般可以通过单击鼠标右键复制XPath值。语法格式:driver.find_element(By.XPATH,value)6.通过元素在HTML中的XPath定位元素find_element()方法的第1个参数By.XPATH表示使用XPath定位方法,第2个参数则是元素XPath值。4.5.2Selenium中单个元素定位方法XPath定位元素的方法比较灵活、多变,XPath定位也是Selenium中常用的定位方法。示例代码如下:#使用XPath+通配符“*”+name定位方法driver.find_element(By.XPATH,'//*[@name="wd"]').send_keys('Python')#使用XPath+input+name定位方法driver.find_element(By.XPATH,'//input[@name="wd"]').send_keys('Python')#使用XPath+input+class定位方法driver.find_element(By.XPATH,'//input[@class="s_ipt"]').send_keys('Python')#使用XPath+form+id+多层级定位方法(这种定位方法对路径字符正确性要求极高,建议安装一些浏览器插件辅助完成)driver.find_element(By.XPATH,'//form[@id="form"]/span/input').send_keys('Python')6.通过元素在HTML中的XPath定位元素4.5.2Selenium中单个元素定位方法在浏览器中打开百度首页,并搜索“人工智能”,通过分析HTML代码,可以知道百度搜索框元素的XPath为“//*[@id="kw"]”。在项目SeleniumTestDemo

根文件夹下创建Python文件seleniumTestDemo10.py,并在该文件中输入以下代码:【示例】通过XPath定位页面元素测试在百度首页搜索“人工智能”4.5.2Selenium中单个元素定位方法语法格式:driver.find_element(By.LINK_TEXT,value)7.通过元素的链接文本(linktext)定位元素link表示包含属性href=“”的元素,可以通过LINK_TEXT定位,linktext指的是页面上展示的文字,link还可以通过部分链接文本定位。4.5.2Selenium中单个元素定位方法在项目SeleniumTestDemo

根文件夹下创建Python文件seleniumTestDemo11.py,并在该文件中输入以下代码:【示例】通过链接文本定位元素:测试在CSDN网站单击“Python”#……省略文件引入模块的代码driver=webdriver.Chrome()driver.get('/')#通过链接文本定位并单击“Python”分类driver.find_element(By.LINK_TEXT,'Python').click()time.sleep(3)上述代码中,find_element()方法的第1个参数By.LINK_TEXT

表示全部匹配定位文本,第2个参数表示定位这个页面的链接文本为“Python”。4.5.2Selenium中单个元素定位方法语法格式:driver.find_element(By.PARTIAL_LINK_TEXT,value)8.通过元素的部分链接文本定位元素例如,通过部分链接文本定位并单击“智能”分类的代码如下:driver.find_element(By.PARTIAL_LINK_TEXT,'智能').click()上述代码中,find_element()方法的第1个参数By.PARTIAL_LINK_TEXT表示模糊匹配定位文本,第2个参数表示定位这个页面的部分链接文本为“智能”。4.5.3定位页面元素的两种方式1.定位单个页面元素在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo12.py,并在该文件中输入以下代码:【示例】在淘宝网站定位单个页面元素#……省略文件引入模块的代码browser=webdriver.Chrome()browser.get("")input_first=browser.find_element(By.ID,"q")input_second=browser.find_element(By.CSS_SELECTOR,"#q")input_third=browser.find_element(By.XPATH,'//*[@id="q"]')print(input_first)print(input_second)print(input_third)browser.close()通过3种不同的方式定位相应元素,第一种通过id的方式,第二种通过CSS选择器的方式,第三种通过XPath选择器的方式,当然结果都是相同的。find_element()方法用于定位单个页面元素,如果定位不到则报错。4.5.3定位页面元素的两种方式2.定位多个页面元素在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo13.py,并在该文件中输入以下代码:【示例】在淘宝网站定位多个页面元素find_elements()方法用于定位包含多个元素的列表,如果定位不到则返回一个空列表。(1)通过find_elements(By.CSS_SELECTOR,value)定位。4.5.3定位页面元素的两种方式2.定位多个页面元素在项目SeleniumTestDemo根文件夹下创建Python文件selenium-TestDemo14.py,并在该文件中输入以下代码:【示例】在百度网站定位多个页面元素find_elements()方法用于定位包含多个元素的列表,如果定位不到则返回一个空列表。(2)通过find_elements(By.TAG_NAME,value)定位。4.5.4定位一组元素在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo15.py,并在该文件中输入以下代码:【示例】在网页trip.html中定位并选中多个复选框定位一组具有相同属性的元素,例如定位并选中多个复选框。#……省略文件引入模块的代码driver=webdriver.Chrome()#本地文件绝对路径file="file:///"+os.path.abspath(r"D:\PycharmProjects\SeleniumTestDemo\page\trip.html")#打开文件driver.get(file)driver.maximize_window()#对文件进行操作inputs=driver.find_elements(By.TAG_NAME,"input")forinputininputs:ifinput.get_attribute('type')=='checkbox':input.click()time.sleep(6)driver.quit()4.5.5应用switch_to方法实现多窗口/多框架的切换操作1.应用switch_to方法实现多窗口的切换操作在页面单击某个元素后,如果打开一个新的窗口,多个窗口之间如何进行切换?浏览器窗口的属性用句柄(Handle)来识别,获取当前页面的句柄方法的代码如下:driver.current_window_handle获取所有句柄的方法为driver.window_handles。所有句柄是一个list列表,如果要切换到具体的窗口使用索引值即可,每打开一个新窗口,索引值就增加1,最先打开的窗口索引值为0。切换句柄的方法为:driver.switch_to.window(所有句柄[索引值])4.5.5应用switch_to方法实现多窗口/多框架的切换操作以注册百度账号为例说明多窗口的切换操作:打开百度首页并单击“登录”,出现二维码,单击二维码右下方的“立即注册”按钮,打开一个新的窗口,即注册窗口。在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTest-Demo16.py,并在该文件中输入以下代码:【示例】应用switch_to实现多窗口的切换操作CDwindow-FCA1B6D64B3D47905636AED84BA24574['CDwindow-FCA1B6D64B3D47905636AED84BA24574','CDwindow-1AB71647E1B4DFC20615483BF161B80A']<class'list'>2百度一下,你就知道运行结果4.5.5应用switch_to方法实现多窗口/多框架的切换操作2.应用switch_to方法实现多框架的切换操作页面中的frame标签有frameset、frame、iframe3种,frameset与其他普通标签没有区别,不会影响正常的定位,frame是整个页面的框架,iframe是内嵌的页面元素。iframe的切换默认使用的是id和name,有id或者name就直接切换,若没有就需要先定位到iframe再进行切换。切换框架的方法为:driver.switch_to.frame(id/name/定位到的iframe)切换至主框架的方法为:driver.switch_to.parent_frame()driver.switch_to.default_content()切换至父框架的方法为:4.5.5应用switch_to方法实现多窗口/多框架的切换操作126邮箱登录页面中嵌套了iframe框架,使用switch_to()方法分别切换到嵌套的框架、主框架。在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTest-Demo17.py,并在该文件中输入以下代码:【示例】在126邮箱登录页面中实现框架的切换操作4.5.6层级定位有时候需要定位的元素没有直接在页面展示,而是需要对页面的元素经过一系列操作之后才会展示出来,这个时候就需要一层层地定位。例如,在Chrome浏览器中单击“自定义及控制”按钮,弹出下图所示的下拉菜单。4.5.6层级定位在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTest-Demo18.py,并在该文件中输入以下代码:【示例】在百度首页实现类似层级定位设置高级搜索运行结果目录导航4.1Selenium简介4.3搭建Selenium自动化测试环境4.5Selenium定位页面元素4.2SeleniumWebDriver简介4.4SeleniumIDE的下载及使用4.6JavaScript常用的定位方法4.8SeleniumWebDriver的高级应用4.7SeleniumWebDriver的常用操作4.10PO设计模式简介测试实战4.9Selenium的二次封装4.11Selenium自动化测试过程常见问题的解决方法4.6.1getElementById定位在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo19.py,并在该文件中输入以下代码:【示例】JavaScript程序中应用getElementById定位#……省略文件引入模块的代码driver=webdriver.Chrome()#打开百度网站首页driver.get('')#等待时间,让浏览器加载time.sleep(3)#使用getElementById定位,单击“立即注册”按钮driver.execute_script("document.getElementById('su').click();")time.sleep(3)driver.quit()4.6.2getElementByClassName定位在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTest-Demo20.py,并在该文件中输入以下代码:【示例】JavaScript程序中应用getElementByClassName定位fromseleniumimportwebdriverimporttimefrommon.byimportBy#打开Chrome浏览器driver=webdriver.Chrome()#打开简书网站首页driver.get('/sign_in')#使用“getElementByClassName+索引”定位,单击【登录】按钮driver.execute_script('document.getElementsByClassName("active")[0].click();')time.sleep(3)driver.quit()4.6.3getElementsByTagName定位【示例】JavaScript程序中应用getElementsByTagName定位在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo21.py,并在该文件中输入以下代码:#……省略文件引入模块的代码driver=webdriver.Chrome()#打开简书网站首页driver.get('/sign_in')#使用“getElementsByTagName+tag+索引+属性值”定位driver.execute_script('document.getElementsByTagName("input")[2].value="username";')driver.execute_script('document.getElementsByTagName("input")[3].value="password";')time.sleep(3)driver.quit()4.6.4使用execute_script()方法执行JavaScript脚本代码JavaScript代码是可以独立运行的脚本,无须使用Selenium的方法就可以实现页面元素的单击、输入、拖曳等操作,例如,拖曳滚动条就无法用元素定位操作实现,只能通过编写JavaScript脚本代码实现。滚动条拖曳对应的JavaScript代码为:document.documentElement.scrollTop=10000补全后的示例代码如下:driver=webdriver.Chrome()driver.get('/')driver.execute_script('document.documentElement.scrollTop=10000')4.6.4使用execute_script()方法执行JavaScript脚本代码1.使用JavaScript处理隐藏元素CSS代码“style="display:block"”表示元素可见,可以使用代码先设置元素为隐藏,再设置元素为可见。在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo22.py,并在该文件中输入以下代码:【示例】使用JavaScript处理隐藏元素#……省略文件引入模块的代码driver.get("")sleep(2)#设置元素为可见driver.execute_script("document.getElementsByClassName('s-isindex-wrap')[0].style.display='block';")sleep(2)driver.quit()4.6.4使用execute_script()方法执行JavaScript脚本代码2.使用JavaScript处理浏览器滚动条在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTest-Demo23.py,并在该文件中输入以下代码:【示例】使用JavaScript处理浏览器滚动条目录导航4.1Selenium简介4.3搭建Selenium自动化测试环境4.5Selenium定位页面元素4.2SeleniumWebDriver简介4.4SeleniumIDE的下载及使用4.6JavaScript常用的定位方法4.8SeleniumWebDriver的高级应用4.7SeleniumWebDriver的常用操作4.10PO设计模式简介测试实战4.9Selenium的二次封装4.11Selenium自动化测试过程常见问题的解决方法4.7.1Selenium的基本操作1.声明并调用浏览器对象Selenium支持多种类型的浏览器,声明并调用浏览器对象的示例代码如下:SeleniumWebDriver支持的其他浏览器都可以通过这种方式声明并调用。fromseleniumimportwebdriverbrowser=webdriver.Chrome()#browser=webdriver.Edge()#browser=webdriver.Firefox()4.7.1Selenium的基本操作2.访问浏览器页面访问浏览器页面的示例代码如下:上述代码运行后,会自动打开Chrome浏览器,显示百度首页,并输出百度首页的源代码,然后关闭浏览器。fromseleniumimportwebdriverbrowser=webdriver.Chrome()browser.get("")print(browser.page_source)browser.close()4.7.1Selenium的基本操作3.网页元素的交互操作在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo24.py。在该文件中输入以下代码,实现自动打开Chrome浏览器,并打开淘宝网站,先输入搜索关键字“洗衣机”,然后删除“洗衣机”,重新输入搜索关键字“空调”,并单击“搜索”按钮。【示例】实现网页元素的交互操作#……省略文件引入模块的代码browser=webdriver.Chrome()browser.get("")input_str=browser.find_element(By.ID,'q')input_str.send_keys("洗衣机")time.sleep(1)input_str.clear()input_str.send_keys("空调")button=browser.find_element(By.CLASS_NAME,'btn-search')button.click()4.7.1Selenium的基本操作3.网页元素的交互操作在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTest-Demo25.py,并在该文件中输入以下代码,实现打开Chrome浏览器,再打开百度首页,输入“Python”,最后按【Enter】键。【示例】创建文件seleniumTestDemo25.py演示Selenium的基本使用4.7.2使用Selenium的方法实现浏览器的基本操作1.打开指定的网页地址使用Selenium进行自动化测试时,打开浏览器之后第一步是让浏览器访问指定的地址,可使用get()方法实现。fromseleniumimportwebdriver#本节后面示例代码中使用的driver变量,没有说明均指这里定义的driver变量driver=webdriver.Edge()driver.get('/')#用于访问指定的地址4.7.2使用Selenium的方法实现浏览器的基本操作2.获取浏览器名称使用

属性可以获取浏览器名称。fromseleniumimportwebdriverdriver=webdriver.Edge()driver.get('/')print(driver.title)#获取当前页面titleprint()3.获取当前浏览器页面的标题使用driver.title属性可以获取当前浏览器页面的标题。获取百度首页标题的示例代码如下:4.7.2使用Selenium的方法实现浏览器的基本操作4.获取当前页面URL在测试过程中,有时需要获取当前页面的URL以判断是否跳转到指定页面,使用driver.current_url属性可以获取页面URL。fromseleniumimportwebdriverdriver=webdriver.Edge()driver.get('/')#获取当前页面的url,即百度首页地址print(driver.current_url)4.7.2使用Selenium的方法实现浏览器的基本操作5.输出信息使用print()方法输出信息。title=driver.titleurl=driver.current_urlprint(title) #输出titleprint(url) #输出当前页面的URL4.7.2使用Selenium的方法实现浏览器的基本操作6.获取浏览器页面的源代码使用driver.page_source属性可以获取浏览器页面的源代码。pagesourse=driver.page_sourceprint('获取页面源代码:{0}'.format(pagesourse))7.浏览器的返回浏览器的“返回”按钮是指浏览器左上角的“←”,使用driver.back()方法可以模拟单击“返回”按钮的操作。4.7.2使用Selenium的方法实现浏览器的基本操作【示例】浏览器的返回操作在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo26.py,并在该文件中输入以下代码,实现在百度搜索框中输入“selenium”,并单击“百度一下”按钮,最后3s后再单击“返回”按钮。#……省略文件引入模块的代码driver=webdriver.Edge()driver.get('/')driver.find_element(By.ID,'kw').send_keys('selenium') #在搜索框中输入“selenium”driver.find_element(By.ID,'su').click() #单击“百度一下”按钮time.sleep(3)driver.back() #返回4.7.2使用Selenium的方法实现浏览器的基本操作8.网页浏览的前进操作【示例】网页浏览的前进操作在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo27.py,并在该文件中输入以下代码,实现在百度搜索框中输入“selenium”,并单击“百度一下”按钮后,再单击“返回”按钮,最后单击“前进”按钮。#……省略文件引入模块的代码driver=webdriver.Edge()driver.get('/')driver.find_element(By.ID,'kw').send_keys('selenium') #在搜索框中输入“selenium”driver.find_element(By.ID,'su').click() #单击“百度一下”按钮driver.back() #返回time.sleep(3)driver.forward() #前进4.7.2使用Selenium的方法实现浏览器的基本操作9.浏览器的前进和后退操作【示例】浏览器的前进和后退操作在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo28.py,并在该文件中输入以下代码,使用back()方法实现浏览器的后退操作,使用forward()方法实现浏览器的前进操作。#……省略文件引入模块的代码browser=webdriver.Chrome()browser.get('/')browser.get('/')browser.get('/')browser.back()time.sleep(1)browser.forward()browser.close()4.7.2使用Selenium的方法实现浏览器的基本操作10.页面浏览的刷新操作【示例】页面浏览的刷新操作在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo29.py,并在该文件中输入以下代码,使用driver.refresh()方法完成刷新操作(类似于按【F5】键或单击左上角的【刷新】按钮进行刷新)。#……省略文件引入模块的代码driver=webdriver.Edge()driver.get('/')driver.refresh() #刷新页面4.7.2使用Selenium的方法实现浏览器的基本操作11.浏览器窗口的操作【示例】浏览器窗口的多种操作在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo30.py,并在该文件中输入以下代码,实现浏览器窗口的多种操作。#……省略文件引入模块的代码driver=webdriver.Edge()driver.get('/')driver.set_window_size(1920,1080) #设置窗口大小为1920px×1080pxdriver.minimize_window() #最小化窗口driver.maximize_window() #最大化窗口driver.fullscreen_window() #全屏窗口4.7.2使用Selenium的方法实现浏览器的基本操作12.浏览器窗口的关闭操作【示例】浏览器窗口的关闭操作在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo31.py,并在该文件中输入以下代码,实现浏览器窗口的关闭操作。#……省略文件引入模块的代码driver=webdriver.Edge()driver.get('/')driver.find_element(By.ID,'kw').send_keys('selenium') #在搜索框中输入“selenium”driver.find_element(By.ID,'su').click() #单击“百度一下”按钮driver.quit() #关闭浏览器窗口4.7.3Selenium获取元素相关信息的常用方法0203get_attribute(name)is_enabled()is_displayed()textis_selected()常用方法01050406size4.7.3Selenium获取元素相关信息的常用方法【示例】Selenium获取元素相关信息的常用方法的应用在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo32.py,并在该文件中输入以下代码:运行结果如下。{'height':20,'width':52}百度首页True/True{'height':24,'width':48}etc=login4.7.4页面元素的常用操作输入元素的内容单击元素清除元素的内容send_keys("value")click()clear()入口准则提交表单submit()4.7.4页面元素的常用操作【示例】页面元素的常用操作在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTest-Demo33.py,并在该文件中输入以下代码:4.7.5键盘的常用操作1.使用【Enter】键send_keys(Keys.ENTER)2.使用【Tab】键切换焦点send_keys(Keys.TAB)3.键盘组合用法send_keys(Keys.CONTROL,'a'),表示【Ctrl+A】键,实现全选内容。send_keys(Keys.CONTROL,'x'),表示【Ctrl+X】键,实现剪切内容。send_keys(Keys.CONTROL,'c'),表示【Ctrl+C】键,实现复制内容。send_keys(Keys.CONTROL,'v'),表示【Ctrl+V】键,实现粘贴内容。send_keys(Keys.SPACE),表示空格键【Space】。send_keys(Keys.TAB),表示制表键【Tab】。send_keys(Keys.ENTER),表示回车键【Enter】。send_keys(Keys.ESCAPE),表示回退键【Esc】。send_keys(Keys.F1),表示【F1】键,类似的还有【F2】键……【F12】键。4.7.5键盘的常用操作【示例】【Enter】键的操作【示例】【Tab】键的操作4.7.5键盘的常用操作【示例】多个键的操作在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo36.py,并在该文件中输入以下代码:#……省略文件引入模块的代码frommon.keysimportKeys #导入Keys类driver=webdriver.Chrome()driver.maximize_window()driver.get("")e=driver.find_element(By.ID,'kw')e.send_keys('python')e.send_keys(Keys.BACK_SPACE) #删除键4.7.6鼠标的常用操作鼠标执行鼠标单击鼠标右击鼠标双击鼠标拖曳鼠标悬停perform()click()context_click()double_click()drag_and_drop(source,target)move_to_element()4.7.6鼠标的常用操作【示例】鼠标的常用操作在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTest-Demo37.py,并在该文件中输入以下代码:4.7.7元素等待1.显式等待元素显式等待使用WebDriverWait()方法,该方法的语法格式如下:该方法表示在设置的时间内,默认每隔一段时间检查一次当前页面元素是否存在,如果超时,就抛出异常。WebDriverWait()方法一般与until()或until_not()方法配合使用。until()方法的语法格式为until(method,message=''),其中,message为可选参数,例如until(EC.presence_of_element_located(定位元素代码))。WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)4.7.7元素等待1.显式等待元素【示例】显式等待元素在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTest-Demo38.py,并在该文件中输入以下代码:4.7.7元素等待2.隐式等待元素隐式等待使用driver.implicitly_wait(time)方法,隐式等待时间为time,且默认是0。使用隐式等待时,如果超时后,仍然没有找到元素,系统会抛出异常。【示例】隐式等待元素在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTest-Demo39.py,并在该文件中输入以下代码:fromseleniumimportwebdriverfrommon.byimportBy#打开Chrome浏览器driver=webdriver.Chrome()driver.maximize_window()driver.implicitly_wait(10)#请求百度首页driver.get("")#输入需要搜索的数据driver.find_element(By.ID,'kw').send_keys("Python")#隐藏等待时间为30秒,默认是0driver.implicitly_wait(30)driver.find_element(By.ID,'su').click()driver.quit()4.7.7元素等待2.隐式等待元素【示例】隐式等待元素与抛出异常处理在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTest-Demo40.py,并在该文件中输入以下代码:#……省略文件引入模块的代码driver=webdriver.Chrome()driver.implicitly_wait(10)#设置隐式等待时间,单位是sdriver.get('')#在等待时间里一直查找元素,找到了会继续执行程序#等待时间已用完,如果仍然找不到元素,就会抛出异常try:print(ctime())driver.find_element(By.ID,'su').send_keys('selenium')exceptNoSuchElementExceptionase:print(e)finally:print(ctime())driver.close()4.7.7元素等待3.强制等待元素强制等待使用time.sleep(time)方法实现。【示例】强制等待元素在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTest-Demo41.py,并在该文件中输入以下代码:4.7.7元素等待3.强制等待元素强制等待使用time.sleep(time)方法实现。【示例】创建文件seleniumTestDemo42.py实现浏览器的基本操作在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTest-Demo42.py,并在该文件中输入以下代码,实现浏览器的基本操作。运行结果如下。{'height':44,'width':550}关于百度wdTrue目录导航4.8SeleniumWebDriver的高级应用4.7SeleniumWebDriver的常用操作4.3搭建Selenium自动化测试环境4.5Selenium定位页面元素4.2SeleniumWebDriver简介4.4SeleniumIDE的下载及使用4.6JavaScript常用的定位方法4.10PO设计模式简介测试实战4.9Selenium的二次封装4.11Selenium自动化测试过程常见问题的解决方法4.1Selenium简介4.8.1下拉框操作首先导入Select类,代码如下:fromselenium.webdriver.support.selectimportSelect1.select类型下拉框有以下3种方法(value、index、visible_text)用于定位下拉框中的选项:Select(sel).select_by_value(value) #value属性的值Select(sel).select_by_index(index) #索引Select(sel).select_by_visible_text(text) #选项中的文本4.8.1下拉框操作1.select类型下拉框【示例】使用value属性定位下拉框中的选项在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo43.py,并在该文件中输入以下代码:#……省略文件引入模块的代码fromselenium.webdriver.support.selectimportSelect#打开Chrome浏览器driver=webdriver.Chrome()#请求“网上旅游调查”页面driver.get(':8000/trip/')#等待时间,让浏览器加载time.sleep(3)element1=driver.find_element(By.ID,'province')#使用value属性定位下拉框中的选项Select(element1).select_by_value('北京')time.sleep(1)Select(element1).select_by_value('湖南')time.sleep(3)driver.quit()4.8.1下拉框操作1.select类型下拉框【示例】使用index属性定位下拉框中的选项在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTest-Demo44.py,并在该文件中输入以下代码:4.8.1下拉框操作1.select类型下拉框【示例】使用visible_text属性定位下拉框中的选项在项目SeleniumTestDemo根文件夹下创建Python文件seleniumTestDemo45.py,并在该文件中输入以下代码:#……省略文件引入模块的代码fromselenium.webdriver.support.selectimportSelect#打开Chrome浏览器driver=webdriver.Chrome()#请求“网上旅游调查”页面driver.get(':8000/trip/')#等待时间,让浏览器加载time.sleep(3)element1=driver.find_element(By.ID,'province')#使用visible_text属性定位下拉框中的选项Select(element1).select_by_visible_text('北京')time.sleep(2)Select(element1).select_by_vis

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论