Selenium系列之--02常见元素操作总结
一、Selenium总共有八种定位方法
-
By.id() 通过id定位
-
By.name() 通过name 定位
-
By.xpath() 通过xpath定位
-
By.className() 通过className定位
-
By.cssSelector() 通过CSS 定位
-
By.linkText() 通过linkText
-
By.tagName() 通过tagName
-
By.partialLinkText() 通过匹到的部分linkText
目前,使用比较多的是cssSelector和xpath,
cssSelector有一些高级用法,熟练后可以方便地定位元素,如^用于匹配一个前缀,$用于匹配一个后缀,*用于匹配任意字符。例如:
a. 匹配一个有id属性,并且id属性是以”id_prefix_”开头的超链接元素:a[id^='id_prefix_']
b. 匹配一个有id属性,并且id属性是以”_id_sufix”结尾的超链接元素:a[id$='_id_sufix']
c. 匹配一个有id属性,并且id属性中包含”id_pattern”字符的超链接元素:a[id*='id_pattern']
最后总结: 1. 当页面元素有id属性时,最好尽量用id来定位。 2. xpath很强悍,但定位性能不是很好,所以尽量少用。如果确实少数元素不好定位,可以选择xpath或cssSelector。 3. 当要定位一组元素相同元素时,可以考虑用tagName或name。 4. 当有链接需要定位时,可以考虑linkText或partialLinkText方式。
二、浏览器常用操作
// 1.浏览器中加载URL: get() --首先要启动浏览器 driver.get("https://www.baidu.com");
driver.navigate().to("http://www.baidu.com/");
//navigate方法会产生1个Navigator对象,其封装了与导航相关的一些方法,比如前进后退等
// 2.浏览器最大化: window().maximize() driver.manage().window().maximize();
// 3.刷新:refresh() driver.navigate().refresh();
// 4.截图:getScreenshotAs() File screenfile=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(screenfile,new File("D:/12306.png"));
// 5.获取当前页的URL:getCurrentUrl() String url = driver.getCurrentUrl(); System.out.println(url);
// 6.获取当前页的title:getTitle() String title = driver.getTitle(); System.out.println(title);
三、常见页面元素操作总结
1. 文本框(input)
WebElement.sendKeys() //元素赋值 WebElement.clear() //清空 WebElement.getAttribute("value"); //获取元素的属性值(一组元素中非常实用)
WebElemetn.getText() //获取输入框文本内容
注:对于通过input标签实现的上传功能,可以将其看作是一个输入框,即通过sendKeys()指定本地文件路径的方式实现文件上传
2. 单选按钮,多选按钮()
WebElement.click(); WebElement.isSelected(); //判断元素是否被选中 WebElement.isEnabled(); WebElement.isDisplayed(); //判断元素是否显示
3. 下拉选 select
WebElement.selectByIndex(int index) 通过index WebElement.selectByVisibleText(String text) 通过匹配到的可见字符 WebElement.selectByValue(String value) 通过匹配到标签里的value
详见:https://sqa.stackexchange.com/questions/12029/how-do-i-work-with-dropdowns-in-selenium-webdriver
4. 提示框Alert
细分三种,Alert,prompt,confirm
driver.switchTo().alert(); 获取alert Alert(driver).accept() # 等同于点击“确认”或“OK” Alert(driver).dismiss() # 等同于点击“取消”或“Cancel” Alert(driver).authenticate(username,password) # 验证,针对需要身份验证的alert,目前还没有找到特别合适的示例页面 Alert(driver).send_keys(keysToSend) # 发送文本,对有提交需求的prompt框(上图3) Alert(driver).text # 获取alert文本内容,对有信息显示的alert框
详见:https://www.cnblogs.com/qiaoyeye/p/5593428.html
5. 超链接
超链接比较常见,一般都是标签a
WebElement.click();
如果是chrome浏览器打开超链接时,点超链接的同时按下Ctrl会打开新标签,按下shift会打开新窗口
6.表单
提交方法:submit解释:查找到表单(from)直接调用submit即可
实例:driver.find_element_by_id("form1").submit()
切换方法:driver.switchTo().frame(xf)
解释:在 Web 应用中经常会遇到 frame/iframe 表单嵌套页面的应用, WebDriver 只能在一个页面上对元素识别与 定位, 对于 frame/iframe 表单内嵌页面上的元素无法直接定位。 这时就需要切换
dr.switchTo().frame("framename or id");
//frame直接跟id和名称均可
WebElement xf = driver.findElement(By.xpath("//*[@id='loginDiv']/iframe")); driver.switchTo().frame(xf); //-------跳出表单 driver.switchTo().defaultContent();
7. 窗口
获取窗口的方法: 1. driver.getWindowHandle(); 返回的是字符串,获取当前窗口的句柄 2. driver.getWindowHandles(); 返回的是 Set<String> ,获取所有窗口 窗口切换 driver.switchTo().window(window);
8. 浏览器的cookies
有时候我们需要验证浏览器中Cookie是否正确, 因为基于真实Cookie的测试是无法通过白盒测试和集成测试进行的。
getCookies() //获得所有 cookie 信息。 getCookieNamed(String name) //返回字典的key为“name”的Cookie信息。 addCookie(cookie dict) //添加Cookie。“cookie_dict”指字典对象,必须有 name和value值。 deleteCookieNamed(String name) //删除Cookie 信息。 “name”是要删除的 cookie的名称; “optionsString” 是该Cookie的选项,目前支持的选项包括“路径” , “域” 。 deleteAllCookies() //删除所有 cookie 信息。
9. 隐式等待
- implicitlyWait。识别对象时的超时时间。过了这个时间如果对象还没找到的话就会抛出NoSuchElement异常。
- setScriptTimeout。异步脚本的超时时间。WebDriver可以异步执行脚本,这个是设置异步执行脚本脚本返回结果的超时时间。
- pageLoadTimeout。页面加载时的超时时间。因为WebDriver会等页面加载完毕再进行后面的操作,所以如果页面超过设置时间依然没有加载完成,那么WebDriver就会抛出异常。
//页面加载超时时间设置为 5s driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS); driver.get("https://www.baidu.com/"); //定位对象时给 10s 的时间, 如果 10s 内还定位不到则抛出异常 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.findElement(By.id("kw")).sendKeys("selenium"); //异步脚本的超时时间设置成 3s driver.manage().timeouts().setScriptTimeout(3, TimeUnit.SECONDS);
- selenium 总结篇,常见方法和页面元素的操作
- selenium 总结篇,常见方法和页面元素的操作
- selenium 总结篇,常见方法和页面元素的操作
- selenium总结篇 常见的方法和页面元素的操作
- java selenium (九) 常见web UI 元素操作 及API使用
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍
- java selenium (九) 常见web UI 元素操作 及API使用
- Selenium常见元素定位方法和操作的学习介绍
- Selenium之常见元素处理系列二--check
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍
- Selenium之常见元素处理系列一--单选框(radio)
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍
- Selenium之常见元素处理系列三--upFile(上传文件),应用JavaScript
- Selenium 2.0 web元素操作总结
- python Selenium 常见操作 元素定位
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍
- Selenium的自我总结2_元素基本操作
- Selenium示例集锦--常见元素识别方法、下拉框、文本域及富文本框、鼠标操作、一组元素定位、弹窗、多窗口处理、JS、frame、文件上传和下载
- Selenium之常见元素处理系列四--下拉框Select
- Selenium2(WebDriver)总结(五)---元素操作进阶(常用类)