还剩35页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
使用指南Selenium欢迎来到使用指南课程!是当今最流行的自动化测试工具之Selenium Selenium一,广泛应用于应用程序的自动化测试本课程将带您从零开始,系统地学Web习的基础知识、环境搭建、基本操作到高级技巧,最后介绍与其他框Selenium架的集成以及最佳实践无论您是测试工程师、开发人员还是专业人士,本课程都能帮助您掌握这一QA强大工具,提高工作效率和测试质量让我们一起踏上学习之旅!Selenium目录第一部分简介Selenium1介绍的基本概念、发展历史、主要组件、优势以及应用场Selenium景第二部分环境搭建2Selenium开发环境安装、配置、项目创建和依赖配置Java WebDriverMaven第三部分基本操作Selenium3浏览器启动、网页导航、元素定位方法等基础知识第四部分常用操作4Selenium点击、输入、表单处理、弹窗处理等常见交互操作第五部分高级技巧Selenium5等待策略、鼠标键盘操作、动态元素处理等高级功能第
六、七部分框架集成与最佳实践6集成、模式、可维护测试代码、性能优化TestNG/JUnit PageObject第一部分简介Selenium基本概念了解是什么以及它的核心功能Selenium发展历史探索从诞生到现在的演变历程Selenium主要组件学习的核心组件及其功能Selenium优势与应用掌握的优势和主要应用场景Selenium什么是?Selenium开源自动化测试工具跨浏览器兼容是一个开源的自动化测支持多种主流浏览器,Selenium Selenium试框架,专门用于测试应用包括、、、Web Chrome Firefox Safari程序它允许测试人员编写脚本等,使测试人员能够在不同Edge来模拟用户与浏览器的交互,无的浏览器环境中验证应用的Web需人工干预即可执行重复性测试一致性表现多语言支持提供了多种编程语言的,包括、、、Selenium WebDriverAPI Java Python C#等,允许测试人员使用自己熟悉的语言编写测试脚本JavaScript的发展历史Selenium年2004Selenium Core1由在开发,最初是一个Jason HugginsThoughtWorks库,用于自动化浏览器行为受同一浏览器源策略JavaScript年限制,需要在同一域下运行22006Selenium RC出现,通过服务器作为代Selenium RemoteControl Selenium理解决了跨域问题,使测试可以控制不同域的浏览器年2008WebDriver3开发了,它直接与浏览器通信,不Simon StewartWebDriver依赖注入,提供了更简洁的和更好的浏览器支持JavaScript API年42009Selenium
2.0和项目合并,成为Selenium WebDriver Selenium
2.0(),结合了两者的优势,成为现代的基WebDriverSelenium年2018Selenium
3.0+5础标准发布,实现了该标准,并继续W3C WebDriverSelenium3演进到今天的,提供更强大的功能Selenium4的主要组件SeleniumSelenium WebDriverSelenium GridSelenium IDE核心组件,提供编程接口直接控制浏览器分布式测试工具,允许在多台不同机器上的浏览器插件形式的记录回放工具,可以记录通过特定浏览器的驱动程序,使用原生浏览不同浏览器并行运行测试通过中心节点分用户在浏览器中的操作并转换为可编辑的测器自动化方法,不依赖支持多发测试到远程节点,大大提高测试执行效率试脚本适合初学者快速创建简单测试用例,JavaScript种编程语言,是当今最主要的组适用于大规模测试和跨平台兼容性测试也可导出为多种语言的代码Selenium件的优势Selenium跨平台兼容开源免费支持、、等多种操作Windows MacLinux系统,测试脚本可以在不同平台上运行,完全开源,无需支付授权费用,有庞大的2保证了测试环境的灵活性社区支持和丰富的在线资源,降低了企业自动化测试的成本1多浏览器支持兼容、、、ChromeFirefoxSafari Edge3等主流浏览器,确保应用在各种浏Web览器环境中的一致表现丰富的生态系统5多语言支持与、、等工具无缝集TestNG JUnitMaven成,支持流程,适合现代敏捷开发4CI/CD提供、、、、JavaPythonC#Ruby和实践DevOps等多种编程语言的,团队JavaScript API可以选择最熟悉的语言进行测试开发的应用场景Selenium功能测试自动化1验证应用功能是否按预期工作通过模拟用户操作检查表单提交、导航、数据处Web理等核心功能,减少人工测试的工作量,提高测试覆盖率回归测试2在代码变更后快速验证现有功能是否仍然正常工作自动化回归测试可以在短时间内完成大量测试用例,确保新功能开发不会破坏现有功能跨浏览器兼容性测试3在不同浏览器和设备上验证应用的表现一致性通过可以并行执Web SeleniumGrid行多浏览器测试,快速发现兼容性问题性能监控4结合其他工具监控应用的加载时间和响应性能可以模拟用户在不同网络条件下Web的操作,收集性能数据并生成报告,帮助优化用户体验第二部分环境搭建Selenium开发环境Java安装JDK并配置环境变量选择IDE安装Eclipse、IntelliJ IDEA等集成开发环境配置WebDriver下载配置特定浏览器的驱动程序项目依赖管理使用Maven或Gradle管理Selenium依赖安装开发环境Java验证安装配置环境变量打开命令行窗口,输入java-安装JDK添加JAVA_HOME环境变量,值为JDK version和javac-version命令验证下载JDK运行下载的安装程序,按照向导进行安装路径;将运行环境和编译器安装是否成功Java访问Oracle官网或OpenJDK网站,下安装记住JDK的安装路径,后续配%JAVA_HOME%\binWindows或如果显示版本信息,则表示安装成功载适合您操作系统的Java置环境变量时需要使用通常默认路$JAVA_HOME/binMac/Linux添加Development KitJDK Selenium径为C:\Program Files\Java\jdk版本到PATH环境变量这确保Java命令测试开发建议使用JDK8或更高版本,号Windows或可以在任何目录下执行以获得最佳兼容性和性能/Library/Java/JavaVirtualMachines/Mac安装Selenium WebDriver依赖方式直接下载文件Maven JAR在项目的文件中添加依赖如果不使用,可以直接从官网下载Maven pom.xml SeleniumMaven SeleniumSelenium Java客户端和WebDriverdependency•访问Selenium官网selenium.devgroupIdorg.seleniumhq.selenium/groupId•下载最新的Selenium Java客户端artifactIdselenium-java/artifactId•解压下载的zip文件version
4.
8.0/version/dependency•将解压后的JAR文件添加到项目的类路径中这种方式需要手动管理所有依赖项,包括和client-combined.jar目录下的所有文件libs JAR会自动下载所需的文件及其依赖项,这是管理Maven JARSelenium依赖的最佳方式配置浏览器驱动下载对应驱动放置驱动文件WebDriverManager每种浏览器都需要特定的驱将下载的驱动程序解压,并放置在系统推荐使用库自动管WebDriver WebDriverManager动需要,中有三种方式添加到系统中理驱动程序通过添加依赖,然Chrome ChromeDriverPATH Maven需要,需要的目录;在代码中使用后只需一行代码Firefox GeckoDriverEdge请确保下载的驱动版本与指定驱动位置;EdgeDriver System.setProperty WebDriverManager.chromedriver.se您的浏览器版本兼容,不匹配的版本可或使用自动管理驱,它会自动下载、配置正确版本的WebDriverManager tup能导致异常动驱动,大大简化配置过程创建项目Maven安装Maven首先确保已安装下载压缩包并解压,配置环境变量为安Maven MavenM2_HOME Maven装目录,将添加到环境变量使用命令验证安装%M2_HOME%\bin PATHmvn-version创建项目结构Maven在中创建新项目如使用,选择,选择IDE MavenEclipse FileNewMaven Project或模板中,选择,选择,创quickstart webappIntelliJ FileNewProject Maven建一个基本项目结构项目目录结构Maven项目遵循标准目录结构存放主代码,存放Maven src/main/java src/test/java测试代码,存放配置文件,定义项目信息和依赖src/main/resources pom.xml这种结构提供了良好的代码组织方式配置版本Java在中配置编译版本添加,设置pom.xml Javamaven-compiler-plugin source和属性为或更高这确保项目在不同环境中使用一致的版本编target
1.8Java译和运行添加依赖Selenium要在Maven项目中添加Selenium依赖,需要编辑pom.xml文件打开项目的pom.xml,在dependencies标签内添加以下依赖项dependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdselenium-java/artifactIdversion
4.
8.0/version/dependencydependencygroupIdio.github.bonigarcia/groupIdartifactIdwebdrivermanager/artifactIdversion
5.
3.2/version/dependency添加完依赖后,保存文件,Maven将自动下载相关JAR包第一个依赖是Selenium核心库,第二个是WebDriverManager用于自动管理浏览器驱动第三部分基本操作Selenium高级操作处理复杂场景1交互操作2点击、输入、提交表单元素定位3多种定位方法导航操作4打开网站、前进后退浏览器操作5启动、配置浏览器启动浏览器常规方式启动使用WebDriverManager//创建Chrome浏览器实例//使用WebDriverManager自动配置Chrome驱动WebDriver driver=new ChromeDriver;WebDriverManager.chromedriver.setup;WebDriver driver=new ChromeDriver;//创建Firefox浏览器实例WebDriver driver=new FirefoxDriver;//自动配置Firefox驱动WebDriverManager.firefoxdriver.setup;//创建Edge浏览器实例WebDriver driver=new FirefoxDriver;WebDriver driver=new EdgeDriver;会自动下载匹配浏览器版本的驱动程序,大大WebDriverManager使用此方法前,需要确保已下载并配置好相应的浏览器驱动,或简化了配置过程,推荐使用者使用自动配置WebDriverManager导航到网页基本导航浏览器导航控制12使用get方法打开指定URL的网页这个方法会等待页面使用navigate方法提供的接口进行更丰富的导航控制,加载完成,但如果页面含有大量AJAX内容,可能需要额包括前进、后退、刷新页面等操作外的等待机制//导航到指定网址//导航到指定网址driver.navigate.tohttps://www.example.driver.gethttps://www.example.com;com;//浏览器后退driver.navigate.back;//浏览器前进driver.navigate.forward;//刷新页面driver.navigate.refresh;验证当前页面3使用getTitle、getCurrentUrl和getPageSource方法获取当前页面的相关信息,用于验证导航是否成功或页面内容是否符合预期//获取页面标题String title=driver.getTitle;//获取当前URLString url=driver.getCurrentUrl;定位元素的方法ID Name最可靠、最高效的定位方式1常用于表单元素定位2XPath/CSS Class Name6最灵活但复杂的定位方式适用于相同类样式的元素35Link Text/Partial Tag Name4专用于链接文本定位适用于定位同类型元素在中,元素定位是自动化测试的基础,上述八种定位方法各有优缺点优先使用、等简单方法,当元素没有唯一标识时,Selenium IDName再考虑使用或选择器良好的定位策略应该选择稳定、唯一且高效的定位方式XPath CSS使用定位元素ID特点与优势代码示例是定位元素的最佳方式,因为在页面中通常是唯一的使用定位ID IDID//HTML示例速度快、可靠性高,是首选的定位方法当元素有唯一属性时,应优ID//input id=username type=text先使用此方法然而,某些动态生成的页面可能使用随机或变化的ID,这种情况下ID定//使用ID定位位方法可能不适用,需要考虑其他定位策略WebElement usernameElement=driver.findElementBy.idusername;//执行操作usernameElement.sendKeys张三;//链式操作driver.findElementBy.idpassword.sendKeys密码123;使用定位元素Name表单元素定位处理重名元素代码示例属性常用于表单元属性不一定是唯一使用定位元素的代Name Namename素,如输入框、单选按的,页面中可能存在多码非常简洁钮、复选框等特别是个具有相同的元素Name WebElement element=在传统表单设计中,在这种情况下,driver.findElementBy.属性用于服务器端方法会返;对于Name findElementnameemail识别提交的数据,因此回第一个匹配的元素,具有相同的多个元name通常具有一定的稳定性而方法素,可以使用findElements List会返回所有匹配元素的elements=列表driver.findElementsBy.namegender使用定位元素Class Name适用场景Class Name定位适用于定位具有特定CSS类的元素这种方法特别适合定位具有相同样式或功能的一组元素,例如导航菜单项、列表项、表格行等当元素没有ID或Name,但有唯一的类名时,这是一个很好的选择注意事项类名可能不唯一,一个元素可能有多个类,多个元素可能共享相同的类使用ClassName定位时,如果有多个匹配元素,findElement会返回第一个匹配元素对于包含空格的多类名,不能直接使用className定位,需要使用CSS选择器代码示例//单个类名定位WebElement element=driver.findElementBy.classNamebtn-primary;//获取所有相同类的元素List elements=driver.findElementsBy.classNameproduct-item;//多类名(使用CSS选择器)WebElementelement=driver.findElementBy.cssSelector.btn.btn-primary;使用定位元素Tag Name标签名定位原理适用场景代码示例123定位是通过元素的标当需要获取页面上所有特定类型的元获取所有链接Tag NameHTML ListallLinks=签名称(如、、、素时,定位非常有用例div ainput buttonTagNamedriver.findElementsBy.tagNamea等)来定位元素这种方法通常用于如,获取所有链接、所有按钮、所有;获取所有输入框List allInputs定位页面上所有同类型的元素,然后图片等通常用于页面分析、数据爬=再进一步筛选所需元素取或需要批量处理同类元素的场景driver.findElementsBy.tagNamei获取后可以通过循环或索nput引访问特定元素使用定位元素Link Text定位原理精确匹配要求代码示例Link TextLink Text定位方法是专门用于定位链接(标签)元素的使用Link Text定位时,必须提供与链接文本完全匹配的方法它通过链接的可见文本(即和标签之间的文本内字符串,包括空格和大小写如果链接文本很长或包含//HTML:a href=login.html登录系统容)来定位链接元素这种方法直观且易于使用,特别动态内容,完全匹配可能会变得困难在这种情况下,/a适合基于文本内容定位链接可以考虑使用Partial LinkText定位或其他定位方法//使用链接文本定位WebElement loginLink=driver.findElementBy.linkText登录系统;//点击链接loginLink.click;//链式操作driver.findElementBy.linkText注册账号.click;使用定位元素Partial LinkText部分文本匹配适用场景使用示例Partial LinkText定位方法是LinkText的扩展版本,它允许使用链当链接文本中包含变化的部分(如日期、计数器等)时,可以使接文本的一部分来定位链接元素当链接文本很长、包含动态生用稳定的部分文本进行定位另外,当同一页面上有多个包含相//HTML:a href=products.html查看所有产品列表成的内容或者你只关心文本的特定部分时,这种方法特别有用似文本的链接时,可以使用独特的部分进行区分定位/a//使用部分链接文本定位WebElement productsLink=driver.findElementBy.partialLinkText所有产品;//点击链接productsLink.click;//对于包含日期的动态链接//a href=report.html2023年3月15日报告/adriver.findElementBy.partialLinkText报告.click;使用定位元素XPath基础常用表达式XPath XPathXPath是XML路径语言,用于在XML文档中导航和选择节点由于HTML可以看作是XML的一种形式,//基本语法因此XPath可以用于定位HTML元素XPath是最强大、最灵活的定位方法,能够应对几乎所有定位//标签名[@属性=值]场景XPath有两种主要类型绝对路径(以/开头,从根节点开始)和相对路径(以//开头,可以从文//通过ID定位档任何位置匹配)相对路径更常用,因为它更灵活、更不容易受到页面结构变化的影响//input[@id=username]//通过name属性定位//input[@name=password]//通过class属性定位//button[@class=login-btn]//通过文本内容定位//a[text=登录]//a[containstext,登录]//通过层级关系定位//div[@id=login-form]//input[@name=username]//通过索引定位(第二个按钮)//button
[2]使用定位元素CSS Selector选择器优势基本语法1CSS2CSS选择器是定位元素的另一种强大方法,与XPath相比,CSS选择器使用标签名、ID(前缀#)、类(前缀.)以及它的语法通常更简洁,执行速度可能更快(尤其在较旧的属性(方括号中)来定位元素还可以使用组合器(、浏览器中)大多数前端开发人员已经熟悉CSS选择器,空格、+、~)来表示元素之间的关系这提供了丰富的定使用起来更加直观位可能性常用选择器示例3//通过ID选择器driver.findElementBy.cssSelector#username;//通过类选择器driver.findElementBy.cssSelector.login-button;//通过标签名driver.findElementBy.cssSelectorbutton;//通过属性driver.findElementBy.cssSelector[name=password];//组合选择器driver.findElementBy.cssSelectorform.login input[type=text];//使用伪类(第一个、最后一个等)driver.findElementBy.cssSelectorul.menu li:first-child;driver.findElementBy.cssSelectortr:nth-child3;第四部分常用操作Selenium元素交互1点击、输入文本、清除、提交表单元素信息获取2获取文本内容、属性值、状态特殊元素处理3下拉菜单、复选框、弹窗、iframe高级交互4新窗口处理、执行JavaScript点击元素基本点击操作点击操作可能的问替代点击方法题点击是自动化中最常当标准点击方法失败时,Web用的操作之一点击操作可能会遇到各种可以尝试以下替代方法Selenium提供了简单的方法问题元素不可见或被其执行器点击click JavaScript-用于模拟用户点击元素他元素覆盖executor.executeScript这个方法适用于各种可点(arguments
[0].click;,击元素,如按钮、链接、ElementNotVisibleExcep element;使用Actions复选框、单选按钮等基tion、类模拟点击-new本用法ElementClickIntercepted Actionsdriver.moveToEl);元素未加driver.findElementBy.id Exceptionementelement.click.p载完成;元素位于视窗外;使用键盘快捷loginButton.click;erform这些问题通常需要使用等键也可能解决一些特殊情待策略或JavaScript点击况来解决输入文本基本文本输入高级文本输入操作向输入框输入文本是表单自动化的基础通过方法实现,该方方法不仅可以输入普通文本,还可以发送特殊键和组合键结合类Selenium sendKeyssendKeys Keys法可以向任何可编辑元素(如input、textarea等)发送键盘输入使用,可以模拟键盘快捷键操作//定位输入框并输入文本//导入Keys类WebElement usernameField=import org.openqa.selenium.Keys;driver.findElementBy.idusername;usernameField.sendKeys张三;//发送特殊键element.sendKeysKeys.ENTER;//链式调用driver.findElementBy.namepassword//发送组合键.sendKeys密码123456;element.sendKeysKeys.CONTROL,a;//Ctrl+A全选element.sendKeysKeys.CONTROL,c;//Ctrl+C复制//发送文本后按回车element.sendKeys搜索内容,Keys.ENTER;//模拟Tab键在表单间移动element.sendKeysKeys.TAB;清除文本基本清除操作清除后输入在操作输入字段时,可能需要先清除其中的现有文本在实际测试中,清除和输入通常是连续的操作可以再输入新内容Selenium提供了clear方法,用于删先使用clear方法清除字段,然后使用sendKeys方除输入元素中的所有现有内容这对于处理预填充的法输入新内容这种组合是表单自动化中的常见模式,表单字段或者需要重新输入数据的测试用例非常有用确保输入的内容不会与现有内容混合或连接代码示例//定位输入框WebElement searchBox=driver.findElementBy.idsearchInput;//清除输入框中的现有文本searchBox.clear;//输入新文本searchBox.sendKeys新的搜索关键词;//链式操作(清除后输入)driver.findElementBy.nameemail.clear.sendKeysnewemail@example.com;提交表单使用方法submit提供了方法,专门用于提交表单当在表单元素(如Selenium submit输入框)上调用此方法时,它会找到包含该元素的表单,并提交整个表单,效果相当于点击表单的提交按钮这是提交表单最简单的方法点击提交按钮另一种常用的提交表单方式是直接点击表单的提交按钮这种方法更直观,也更接近用户的实际操作方式使用方法点击具有click属性的按钮或输入元素,触发表单提交行为type=submit按回车键提交在许多网站中,在表单的最后一个输入字段中按下回车键也可以提交表单使用模拟用户按下回车键的行为,这对于sendKeysKeys.ENTER没有明显提交按钮的简单表单(如搜索框)特别有用获取元素文本使用方法文本内容验证1getText2getText方法用于获取元素的可见文本内容它返获取元素文本后,通常需要与预期值进行比较,验回元素及其子元素的所有可见文本,不包括隐藏元证页面内容的正确性可以使用Java的字符串比较素的文本这个方法常用于验证页面上显示的信息方法或JUnit/TestNG的断言方法进行验证注意文是否符合预期,比如验证登录后显示的用户名、错本可能包含前后空格,可能需要使用trim方法处理误消息、操作结果等代码示例3//获取欢迎消息WebElement welcomeMessage=driver.findElementBy.idwelcome;String text=welcomeMessage.getText;//验证文本内容Assert.assertEquals欢迎回来,张三!,text;//获取错误消息并验证String errorMsg=driver.findElementBy.classNameerror.getText;Assert.assertTrueerrorMsg.contains密码不正确;获取元素属性方法代码示例getAttribute除了文本内容,元素的属性值也包含重要信息Selenium的getAttribute方法用于获取元素特定//获取输入框的当前值属性的值这对于检查元素的状态、类型、值等非常有用String inputValue=常见的需要获取的属性包括value(输入框的当前值)、class(元素的CSS类)、disabled(是driver.findElementBy.idusername否禁用)、selected(是否选中)、href(链接地址)等属性名称区分大小写,与HTML源码中.getAttributevalue;完全一致//检查链接地址String href=driver.findElementBy.linkText官网.getAttributehref;Assert.assertEqualshttps://www.example.com,href;//检查按钮是否禁用boolean isDisabled=driver.findElementBy.idsubmitBtn.getAttributedisabled!=null;//获取CSS类String className=element.getAttributeclass;处理下拉菜单类介绍选择选项的方法代码示例SelectSelenium提供了专门的Select类来处理HTML的Select类提供了三种主要的选择方法通过索引选择select元素(下拉菜单)使用这个类可以方便地选selectByIndex、通过值选择selectByValue和通过import择选项、获取选项列表、检查选中状态等要使用可见文本选择selectByVisibleText其中,通过可org.openqa.selenium.support.ui.Select;Select类,首先需要定位select元素,然后创建见文本选择最接近用户体验,也最容易理解Select对象//创建Select对象WebElement dropdown=driver.findElementBy.idprovince;Select provinceSelect=newSelectdropdown;//通过可见文本选择provinceSelect.selectByVisibleText北京;//通过值选择provinceSelect.selectByValuebj;//通过索引选择(0为第一项)provinceSelect.selectByIndex1;//获取所有选项List options=provinceSelect.getOptions;//获取选中的选项WebElement selected=provinceSelect.getFirstSelectedOption;处理复选框和单选按钮检查选中状态改变选中状态复选框和单选按钮在HTML中通常是input元素,type属性分别为checkbox和使用click方法可以改变复选框和单选按钮的选中状态对于复选框,每次radioSelenium提供了isSelected方法来检查这些元素是否被选中该方点击都会切换其状态(选中/未选中);对于单选按钮,点击会选中该按钮,法返回布尔值,选中返回true,未选中返回false同时自动取消同一组中其他按钮的选中状态代码示例//定位复选框WebElement checkbox=driver.findElementBy.idagreement;//检查复选框是否已选中boolean isChecked=checkbox.isSelected;//如果未选中,则点击选中if!isChecked{checkbox.click;}//处理单选按钮WebElement radioMale=driver.findElementBy.idgender-male;WebElement radioFemale=driver.findElementBy.idgender-female;//选择男选项radioMale.click;//验证是否正确选中Assert.assertTrueradioMale.isSelected;Assert.assertFalseradioFemale.isSelected;处理警告和弹出窗口获取对象Alert浏览器的JavaScript警告框、确认框和提示框是特殊的对话框,不属于HTML DOM结构Selenium提供了专门的Alert接口来处理这些对话框使用driver.switchTo.alert方法获取当前的Alert对象的主要操作AlertAlert接口提供了四个主要方法accept(点击确定按钮)、dismiss(点击取消按钮)、getText(获取对话框文本)和sendKeys(向提示框输入文本)根据对话框类型和测试需求,选择合适的方法操作对话框处理不同类型的对话框JavaScript有三种类型的对话框alert(警告框,只有确定按钮)、confirm(确认框,有确定和取消按钮)和prompt(提示框,可以输入文本)不同类型的对话框需要使用不同的方法处理代码示例//点击触发警告框的按钮driver.findElementBy.idalertButton.click;//切换到警告框Alert alert=driver.switchTo.alert;//获取警告框文本String alertText=alert.getText;System.out.println警告框文本:+alertText;//点击确定按钮关闭警告框alert.accept;//处理确认框driver.findElementBy.idconfirmButton.click;Alert confirm=driver.switchTo.alert;//点击取消按钮confirm.dismiss;//处理提示框driver.findElementBy.idpromptButton.click;Alert prompt=driver.switchTo.alert;//输入文本prompt.sendKeys测试输入;//点击确定prompt.accept;处理iframe的挑战iframeiframe是嵌入在页面中的内嵌框架,有自己独立的DOM结构Selenium默认只能访问当前页面的主要DOM,无法直接访问iframe内的元素要操作iframe中的元素,必须先切换到该iframe的上下文切换到iframe使用driver.switchTo.frame方法切换到iframe这个方法可以接受三种参数iframe的索引(从0开始)、iframe的name或id属性、或iframe的WebElement对象切换后,所有的元素定位和操作都将在iframe的上下文中进行返回主文档操作完iframe中的元素后,需要使用driver.switchTo.defaultContent方法返回到主文档,才能继续操作主页面中的元素如果有嵌套的iframe,也可以使用driver.switchTo.parentFrame返回到父级iframe代码示例//通过id切换到iframedriver.switchTo.framemyFrame;//通过索引切换到iframe(第一个iframe)driver.switchTo.frame0;//通过WebElement切换到iframeWebElement frameElement=driver.findElementBy.cssSelectoriframe.content;driver.switchTo.frameframeElement;//在iframe中操作元素driver.findElementBy.idinputField.sendKeys文本;//返回主文档driver.switchTo.defaultContent;//返回父级iframe(嵌套iframe情况)driver.switchTo.parentFrame;。
个人认证
优秀文档
获得点赞 0