版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章Selenium高级应用CATALOGUE目录任务情境6.1复杂控件操作6.2WebDriver的特殊操作6.3浏览器定制启动参数6.4影响元素加载的外部因素6.5设置元素等待6.6JavaScript的应用练习与实训任务情境复杂控件测试挑战小王加入项目,需测试复杂Web控件,如富文本编辑器、滑块、Ajax选项等,确保它们行为符合预期,验证控件交互与响应性。高效测试策略需求Selenium高级应用指南在项目启动会议上,小王提出如何设计和执行复杂控件测试案例,以及高级技术和策略如何提高测试效率和质量。为了帮助对Selenium高级应用感兴趣的读者,本章将深入探讨复杂控件的操作方法,并且通过实际的编程练习,指导读者如何进行复杂的控件交互。6.1复杂控件操作滑块是一种常见的Web控件,用于在一定范围内选择数值;在自动化测试中,模拟滑块操作可以验证滑块的交互功能和响应性。单击并按下鼠标左键,模拟用户开始拖动滑块的操作,是滑动滑块测试的第一步,为后续滑动操作打下基础。假设我们需要测试百度首页上的滑块控件,该滑块用于控制页面上某个元素的显示大小;参考代码如下。移动鼠标,第一个参数为x坐标距离,第二个参数为y坐标距离;代表鼠标在屏幕上移动的偏移量,以像素为单位。滑动滑块操作概述滑块操作验证交互click_and_hold()百度滑块测试示例move_by_offset()操作Ajax选项Ajax与动态内容Ajax(AsynchronousJavaScriptandXML)允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分内容。WebDriver与AjaxAjax动态内容测试WebDriver可以处理Ajax请求,等待Ajax加载完成,并且获取更新后的数据;确保测试的准确性和完整性。正在测试一个使用Ajax动态加载内容的网页,我们需要打开一个新选项卡,并且在新选项卡中进行操作。操作Ajax选项创建WebDriver实例创建WebDriver实例,访问初始的百度网页,为后续操作打下基础,确保自动化测试能够顺利进行。等待并操作新标签等待新选项卡加载完成,然后在新选项卡中执行操作,如获取页面标题,以验证新选项卡的加载和内容显示情况。打开并切换到新标签使用JavaScript执行窗口打开新选项卡,并立即切换到新选项卡,以便在新打开的页面上进行操作。关闭并返回原标签关闭新选项卡,并切换回原选项卡,确保浏览器状态与测试预期一致,最后退出WebDriver实例,释放资源。富文本编辑器测试富文本编辑器通常提供类似于桌面文字处理软件的功能,允许用户对文本内容进行格式设置。富文本编辑器的功能加粗文本操作示例在自动化测试中,我们经常需要向这些编辑器输入特定内容或进行格式设置;假设我们需要在网页的富文本编辑器中输入一段格式化文本,并且将文本设置为加粗。在Web自动化测试中,操作富文本编辑器是一个常见的需求;富文本编辑器允许用户以所见即所得的方式格式化文本。操作富文本编辑器验证文本内容或格式验证编辑器中的文本内容或格式是否符合预期;可以通过断言来检查文本内容是否存在或格式是否正确。创建WebDriver实例创建WebDriver实例,访问包含富文本编辑器的网页,是自动化测试的第一步,确保后续操作能够在正确的页面上进行。输入并格式文本在编辑器中输入文本内容,并通过模拟键盘操作或JavaScript来设置文本格式;例如,使用快捷键Ctrl+B模拟加粗操作。等待并定位编辑器由于富文本编辑器可能包含在一个iframe中,需要等待iframe加载完成并切换到该iframe,然后定位到编辑器的body元素或具体可编辑元素。操作富文本编辑器6.2WebDriver的特殊操作6.2.1WebDriver高级应用WebDriver高级应用WebDriver高级应用包括元素class值包含空格、attribute、property和text的区别、定位动态id等元素定位方法。特殊操作与场景提升测试技能与应对WebDriver在面对特殊元素和场景时,如动态id、弹窗处理等,需要采用高级应用技巧,结合实际情况选择最佳定位策略。通过编程练习掌握WebDriver的高级技能,提升自动化测试的深度和广度,应对各种复杂测试挑战。6.2.2元素class值包含空格t的区别attributeattribute定义attribute是定义在HTML标签中的,用于描述元素的特征或传递信息给浏览器。attribute示例如<inputtype="text"name="username">中的type和name就是属性。attribute访问attribute属性通常在HTML文档的源代码中静态定义,并且在页面加载时被解析。通过get_attribute('attribute_name')方法访问HTML属性。Property是JavaScript中的对象特性,可以代表元素的当前状态或行为,并且可以被JavaScript动态读取和修改。Property定义Property属性基于DOM(文档对象模型),它们是在页面加载后通过JavaScript在运行时环境中定义的。通过get_property('property_name')方法访问DOM属性。Property的访问PropertyTextText内容元素内的文本内容,不包含任何HTML标签,假设我们需要访问一个网页,并且区分使用attribute、property和获取text。HTML结构attribute访问该网页的部分HTML如下。<divid="myDiv"style="color:blue;">HelloWorld!</div>对于id和style,它们是HTMLattribute,可以通过Selenium的get_attribute()方法访问。div_id=driver.find_element(By.ID,'myDiv').get_attribute('id')和div_style=driver.find_element(By.ID,'myDiv').get_attribute('style')property访问div_class_name=driver.find_element(By.ID,'myDiv').get_property('className')和div_text_content=driver.find_element(By.ID,'myDiv').get_property('textContent')获取text内容获取元素text对于text,它是元素文本内容,可以通过text访问。element_text=driver.find_element(By.ID,'myDiv').text和print(f"Textcontent:{element_text}")对于className和textContent,它们是DOMproperty,可以通过Selenium的get_property()方法访问。Text6.2.3定位动态id如果元素具有静态的class、name等属性,这些属性在页面中是稳定不变的,因此我们可以利用这些属性来精确定位元素。通过class属性定位元素,`element=driver.find_element(By.CLASS_NAME,"static-class")`,确保元素具有唯一的class值。示例代码静态属性定位使用其他属性如果具有动态id的元素与页面上某个已知元素有相对位置关系,则可以使用相对定位的方法,如查找某个父元素下的子元素或兄弟元素。相对定位方法通过XPath定位父元素下的动态id子元素,`element=driver.find_element(By.XPATH,".//div[@class='parent']/div[@class='dynamic-id-child']")`。示例代码相对定位XPathcontains函数使用XPath中的contains()函数来定位包含特定文本的元素,例如,`element=driver.find_element(By.XPATH,"//*[contains(@id,'dynamicIdPart')]")`。CSS选择器定位使用CSS选择器结合属性选择器来定位元素,例如,`element=driver.find_element(By.CSS_SELECTOR,"div[id^='dynamicIdStart']")`。XPath和CSS选择器链接文本定位如果元素附近有固定的文本链接,则可以使用By.LINK_TEXT或By.PARTIAL_LINK_TEXT来定位,例如,`element=driver.find_element(By.LINK_TEXT,"SignIn")`。部分链接文本定位By.PARTIAL_LINK_TEXT适用于只记住部分链接文本的情况,通过模糊匹配来定位元素,例如,`element=driver.find_element(By.PARTIAL_LINK_TEXT,"Sign")`。链接文本如果元素相对于其他元素的位置是已知的,可以使用这种关系来定位,例如,`parent_element=driver.find_element(By.ID,"known-parent-id")`。父元素定位在已知父元素的基础上,使用XPath定位其子元素,其中包含动态id的部分,例如,`child_element=parent_element.find_element(By.XPATH,".//child::*[contains(@id,'dynamic')]")`。子元素定位元素的关系定位VS使用WebDriver的execute_script()方法执行JavaScript代码,通过document.querySelector或document.evaluate等DOM方法来定位元素。示例代码通过JavaScript定位动态id元素,`element=driver.execute_script("returndocument.getElementById('dynamicId')")`。JavaScript定位JavaScript定位分析页面的DOM结构,找到动态元素周围的静态元素,并且使用这些静态元素来辅助定位。DOM结构分析在Web自动化测试中,我们常需定位动态id元素,id是元素定位的一种常见方式,但id值动态生成带来挑战。静态元素定位页面结构分析使用XPath的正则表达式功能,通过正则表达式匹配id的模式,可以精确地定位到所需的元素。截图是自动化测试中一个非常有用的功能,可以用来捕获测试过程中的页面状态,以便于调试和记录测试结果。下面是一个使用XPath正则表达式定位元素的示例代码,通过匹配id的模式来找到对应的元素。WebDriver提供了save_screenshot()方法对当前页面进行截图,并且保存为本地文件。正则表达式XPath正则表达式截图功能示例代码save_screenshot6.2.4截图功能截图是自动化测试中一个非常有用的功能,可以用来捕获测试过程中的页面状态,以便于调试和记录测试结果。WebDriver提供了save_screenshot()方法对当前页面进行截图,并且保存为本地文件。保存截图的方法截图功能的作用截图功能6.3浏览器定制启动参数6.3.1常用的浏览器启动参数及其含义常用的浏览器启动参数(1)--disable-images:禁用加载网页中的图片,可以加快页面加载速度,减少数据的使用。(2)--headless:启用无头模式,浏览器不会显示界面,适合在后台运行自动化测试脚本。(3)--disable-gpu:禁用GPU硬件加速,有些测试环境可能没有GPU或不需要GPU加速。(4)--window-size=WxH:设置浏览器窗口的初始尺寸,其中,W和H分别表示窗口的宽度和高度。(5)--start-maximized:在启动时最大化浏览器窗口。(6)--user-agent=<ua>:设置自定义的用户代理字符串,模拟不同的浏览器或设备。(7)--proxy-server=<p>:设置HTTP代理服务器,<p>应为host:port格式。常用的浏览器启动参数(8)--ignore-certificate-errors:忽略SSL证书错误,允许浏览器在访问HTTPS站点时不进行证书验证。(9)--disable-popup-blocking:禁用弹窗阻止程序,允许显示弹窗。(10)--disable-translate:禁用自动翻译非用户语言的页面。(11)--disable-extensions:禁用所有Chrome扩展程序。(12)--disable-sync:禁用同步功能。(13)--no-sandbox:禁用操作系统的沙箱机制,有时用于解决权限问题。(14)--disable-dev-shm-usage:禁用/dev/shm,有时用于解决无头模式下的渲染问题。常用的浏览器启动参数(15)--enable-automation:启用自动化,有时用于确保浏览器知道它正在被自动化工具控制。(16)--disable-infobars:禁用信息栏(infobars),这些信息栏可能会干扰测试。(17)--disable-browser-side-navigation:禁用浏览器端导航,强制使用服务端导航。(18)--disable-notifications:禁用桌面通知。这些参数可以通过Selenium的Options类设置。6.3.2Selenium设置启动参数示例6.3.2Selenium设置启动参数示例禁用图片加载与无头模式通过Selenium的Options类,我们可以轻松定制Chrome浏览器的启动参数,如禁用图片加载和启用无头模式,以满足特定的自动化测试需求。访问百度网页测试操作在测试过程中,我们可能会需要访问某个特定的网页,例如百度网页,我们可以通过WebDriver的get方法来实现这一点,并对其进行各种测试操作。在完成测试任务后,为了确保资源的释放和避免对系统造成不必要的负担,我们需要调用WebDriver的quit方法,来关闭浏览器并终止相关的测试操作。6.3.3定制启动参数的方法通过Options类设置参数Selenium的Options类提供了一个灵活的方式来设置浏览器的启动参数。通过实例化Options类,并向其添加所需的参数,可以有效地定制浏览器的启动方式。6.3.3定制启动参数的方法环境隔离需求多任务并行时,需为每个实例分配独立参数(如不同端口代理),防止资源竞争或数据污染。注意事项代码实现示例通过Selenium的Options类可快速配置参数,例如同时启用无头模式和禁用图片加载的代码模板,需注意ChromeDriver路径设置与参数拼接语法。应用场景价值这些参数能显著提升自动化测试效率(如加速页面加载)、兼容性(模拟不同设备UA)及稳定性(解决沙箱权限问题),是测试脚本设计的必备工具集。总结6.4影响元素加载的外部因素在Web自动化测试中,Ajax请求等外部因素可能影响元素加载,导致定位失败或测试结果不稳定。通过对浏览器的定制化启动,使用多种参数来满足特定的测试需求,确保测试环境的配置。WebDriver的save_screenshot()方法可截取当前页面并保存为本地文件,是自动化测试中的有用功能。在测试Ajax异步加载数据时,需确保数据完全加载后再进行元素定位和操作,以保障测试准确性。6.4影响元素加载的外部因素Ajax请求与元素加载浏览器启动参数定制截图功能元素加载与测试准确性6.5设置元素等待显式等待的定义WebDriver提供显式等待,直至条件成立或超时,否则抛出异常;此机制用于处理元素加载等异步操作。WebDriverWait构造函数driver为浏览器驱动,timeout为最长等待时间(秒),poll_frequency为检测间隔(0.5秒),ignored_exceptions为超时后异常信息。until与until_not方法until方法持续调用方法直至返回True,而until_not则直至返回False;这两个方法均接受驱动程序作为参数,并返回相应的布尔值。显式等待的示例使用WebDriverWait配合until方法,检查元素是否可见;若元素在设定时间内出现,则继续执行,否则抛出异常。显式等待隐式等待隐式等待的概念WebDriver的implicitly_wait方法实现隐式等待,允许脚本在元素加载时等待固定时间,以应对页面元素加载的延迟。隐式等待的示例设置10秒的隐式等待时间,获取页面元素;若元素立即存在,则继续;否则,以轮询方式检查元素,直至超时或找到元素。隐式等待的特点隐式等待是固定时间等待,不影响脚本速度,适用于页面元素加载可能延迟的情况,超出时间未找到元素将抛出异常。6.6JavaScript的应用获取页面元素的值通过JavaScript,我们可以轻松获取页面元素的值,如通过document.getElementById('myElement').value获取指定元素的value属性。值操作在自动化测试中,通过JavaScript获取页面元素的值是一个常见的操作,这使我们能够检查或验证元素的值是否符合预期,确保测试结果的准确性。操作页面元素JavaScript不仅仅是获取页面元素的值,它更强大的地方在于能够直接修改页面元素的属性,如通过document.getElementById('myButton').disabled=false;来取消按钮的禁用状态。修改页面元素属性在自动化测试中,通过JavaScript修改页面元素的属性是一个灵活且强大的手段,这使我们能够动态地改变元素的交互状态或外观,以实现更复杂的测试场景。属性操作修改页面元素属性为了在测试过程中更好地可视化操作,可以使用JavaScript来临时改变元素的样式,如通过arguments[0].style.border='3pxsolidred'来高亮显示被操作的元素。高亮显示元素在自动化测试中,通过JavaScript改变元素的样式是一个有用的调试技巧,它使得被操作的元素在测试中更加显眼,从而帮助测试人员更好地理解和跟踪元素的交互。样式操作高亮显示正在被操作的页面元素滚动条操作确保元素在可视范围内,对于位于页面下方或隐藏在折叠菜单中的元素,通常需要使用滚动条操作,通过模拟用户
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 28544-2026封装闪烁体光输出和固有分辨率的测量方法
- T/SDPEA 0028-202335千伏及以上高压电力用户输变电设备运行维护技术规程
- T/LCH 039-2025老旧小区景观绿化改造工程管理与验收规范
- T/CDAIA 0009-2025智能网联汽车示范运营作业规范
- T/CFA 0197-2025镁合金半固态注射成型机
- T/CSPSTC 179-2025堤防振动测试技术规范
- GB/T 14531-2026办公家具阅览桌、椅、凳
- 2025~2026学年贵州省黔西南布依族苗族自治州兴义市十校监考人教版三年级上册12月月考数学试卷【附答案】
- 2027届湖南长沙长郡芙蓉中学八年级数学第一学期期末质量跟踪监视试题含解析
- PHP程序员笔试真题(含详细答案)
- 2026一级建造师《水利水电工程管理与实务》真题及答案解析(完整版含图表)
- 2026年福建省高考地理试卷真题(含答案)
- 2026年铅锌冶炼行业市场深度调研报告及未来五至十年技术路径与产业化前景
- 2026标准短视频拍摄合同律师审核修订版条款严谨权利义务对等公平合理可签
- 中国临床肿瘤学会(CSCO)胃癌诊疗指南(2026版)
- 有限空间作业监理实施细则(详细完-整版)
- 2026年烟花爆竹零售经营安全考试试题及答案
- (正式版)DB34∕T 3763-2020 《水泥生产企业化验室达标评价规范》
- 2026年产科急症多学科协作处置试题(含答案)
- 草原鼠虫害防治施工方案及技术措施
- 2026年国家林业和草原局直属单位招聘笔试练习题附答案
评论
0/150
提交评论