selenium 使用教程详解-java版本 (3)

假如我们有一个Web页面,通过前端工具(如,Firebug)查看到一个元素的属性是这样的。

<html> <head> <body link="#0000cc"> <a href="http://www.likecs.com/" onmousedown="return c({'fm':'tab','tab':'logo'})"> <form action="/s"> <span>按钮</span> <input value="" maxlength="255" autocomplete="off">

我们的目的是要定位input标签的输入框。

通过id定位:

driver.findElement(By.id("kw"))

通过name定位:

driver.findElement(By.name("wd"))

通过class name定位:

driver.findElement(By.className("s_ipt"))

通过tag name定位:

driver.findElement(By.tagName("input"))

通过xpath定位,xpath定位有N种写法,这里列几个常用写法:

driver.findElement(By.xpath("//*[@id='kw']")) // id定位 driver.findElement(By.xpath("//*[@name='wd']")) // 属性值定位 driver.findElement(By.xpath("//span[text()='按钮']")) // 文本定位 driver.findElement(By.xpath("//input[@class='s_ipt']")) // class属性定位 driver.findElement(By.xpath("/html/body/form/span/input")) // 绝对路径定位 driver.findElement(By.xpath("//span[@class='soutu-btn']/input")) // 相对路径定位 driver.findElement(By.xpath("//form[@id='form']/span/input")) driver.findElement(By.xpath("//input[@id='kw' and @name='wd']")) // 多组合属性定位 driver.findElement(By.xpath("//span[contains(text(),'按钮')]")) // 是否包含文本

通过css定位,css定位有N种写法,这里列几个常用写法:

driver.findElement(By.cssSelector("#kw") // id定位 driver.findElement(By.cssSelector("[name=wd]") // name属性值定位 driver.findElement(By.cssSelector(".s_ipt") // class地位 driver.findElement(By.cssSelector("html > body > form > span > input") // css层级定位 driver.findElement(By.cssSelector("span.soutu-btn> input#kw") driver.findElement(By.cssSelector("form#form > span > input")

接下来,我们的页面上有一组文本链接。

<a href="http://news.baidu.com">新闻</a> <a href="http://www.hao123.com">hao123</a>

通过linkText定位:

driver.findElement(By.linkText("新闻") driver.findElement(By.linkText("hao123")

通过 partialLinkText 定位:

driver.findElement(By.partialLinkText("新") driver.findElement(By.partialLinkText("hao") driver.findElement(By.partialLinkText("123") 4.3.xpath进阶-轴定位

parent::div 上层父节点,你那叫div的亲生爸爸,最多有一个;

child::div 下层所有子节点,你的所有亲儿子中叫div的;

ancestor::div 上面所有直系节点,是你亲生爸爸或者你亲爹或者你亲爹的爸爸中叫div的;

descendant::div 下面所有节点,你的后代中叫div的,不包括你弟弟的后代;

following::div 自你以下页面中所有节点叫div的;

following-sibling::div 同层下节点,你所有的亲弟弟中叫div的;

preceding::div 同层上节点,你所有的亲哥哥以及他们的后代中叫div的;

preceding-sibling::div 同层上节点,你所有的亲哥哥中叫div的;

详细操作可参考:https://www.cnblogs.com/wangyi0419/p/11638652.html

关于 xpaht 和 css 的定位比较复杂,请参考: xpath语法、 css选择器

第五章 Selenium API 5.1.WebDriver 常用 API

WebDriver 提供了一系列的 API 来和浏览器进行交互,如下:

方法 描述
get(String url)   访问目标 url 地址,打开网页  
getCurrentUrl()   获取当前页面 url 地址  
getTitle()   获取页面标题  
getPageSource()   获取页面源代码  
close()   关闭浏览器当前打开的窗口  
quit()   关闭浏览器所有的窗口  
findElement(by)   查找单个元素  
findElements(by)   查到元素列表,返回一个集合  
getWindowHandle()   获取当前窗口句柄  
getWindowHandles()   获取所有窗口的句柄  
5.2.WebElement 常用 API

​ 通过 WebElement 实现与网站页面上元素的交互,这些元素包含文本框、文本域、按钮、单选框、div等,WebElement提供了一系列的方法对这些元素进行操作:

方法 描述
click()   对元素进行点击  
clear()   清空内容(如文本框内容)  
sendKeys(...)   写入内容与模拟按键操作  
isDisplayed()   元素是否可见(true:可见,false:不可见)  
isEnabled()   元素是否启用  
isSelected()   元素是否已选择  
getTagName()   获取元素标签名  
getAttribute(attributeName)   获取元素对应的属性值  
getText()   获取元素文本值(元素可见状态下才能获取到)  
submit()   表单提交  
5.2.1.代码示例 public class BaiduSearch { public static void main(String[] args) { // 1.创建webdriver驱动 WebDriver driver = new ChromeDriver(); // 2.打开百度首页 driver.get("https://www.baidu.com"); // 获取搜索框元素 WebElement inputElem = driver.findElement(By.id("kw")); // clear()方法,清空输入框内容 inputElem.clear(); // sendKeys()方法,在搜索框中输入搜索内容 inputElem.sendKeys("selenium"); // 元素是否显示 boolean displayed = inputElem.isDisplayed(); System.out.println(displayed); // 输出true // 元素是否启用 boolean enabled = inputElem.isEnabled(); System.out.println(enabled); // 输出true // 判断元素是否被选中状态,一般用在Radio(单选),Checkbox(多选),Select(下拉选) // 在输入框中使用无意义 boolean selected = inputElem.isSelected(); System.out.println(selected); // 输出fasle // 获取标签名 String tagName = inputElem.getTagName(); System.out.println(tagName); // 输出input // 获取属性名(name属性) String name = inputElem.getAttribute("name"); System.out.println(name); // 输出wd // 获取文本值 String text = inputElem.getText(); System.out.println(text); // 输出selenium // 通过submit提交 driver.findElement(By.id("su")).submit(); // click()方法,点击百度一下按钮 driver.findElement(By.id("su")).click(); // 退出浏览器 driver.quit(); } } 第六章 元素等待机制

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjgxg.html