selenium - java版本
- 打开百度进行搜
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.edge.EdgeDriver;public class BaiduSearch { public static void main(String[] args) { // 1.创建webdriver驱动 WebDriver driver = new EdgeDriver(); // 2.打开百度首页 driver.get("https://www.baidu.com"); // 3.获取输入框,输入selenium driver.findElement(By.id("kw")).sendKeys("selenium"); // 4.获取“百度一下”按钮,进行搜索 driver.findElement(By.id("su")).click(); // 5.退出浏览器 driver.quit(); }}
八大元素定位
定位方式
selenium提供了8种定位方式
id
name
class name
tag name
link text
partial link text
xpath
css selector
方法描述参数示例findElement(By.id())通过元素的id属性来定位元素对应的id属性findElement(By.id("kw"))findElement(By.name())通过元素的name属性来定位元素对应的name值findElement(By.name(user))findElement(By.className())通过元素的class名来定位元素对应的class类名findElement(By.className("password"))findElement(By.tagName())通过元素的tag标签名来定位元素对应的标签名findElement(By.tagName("input"))findElement(By.linkText())通过元素-标签对之间的文本信息来定位元素文本内容findElement(By.linkText("登录"))findElement(By.partialLinkText())通过元素-标签对之间的部分文本信息来定位元素部分文本内容findElement(By.partialLinkText("百度"))findElement(By.xpath())通过xpath语法来定位元素xpath表达式findElement(By.xpath("//input[@id='kw']"))findElement(By.cssSelector())通过css选择器来定位元素css元素选择器findElement(By.cssSelector("#kw"))
同时这8种方法都对应有着返回复数元素的方法,分别在调用的方法findElements(By.id()) 加上一个s:findElements(By.id())
findElements(By.name())
findElements(By.className())
findElements(By.tagName())
findElements(By.linkText())
findElements(By.partialLinkText())
findElements(By.xpath())
findElements(By.cssSelector())
通过xpath定位,xpath定位有N种写法,这里列几个常用写法:
Copydriver.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种写法,这里列几个常用写法:
Copydriver.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")
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的;
Selenium API
WebDriver常用API
WebDriver提供了一系列的API来和浏览器进行交互,如下:
方法描述get(String url)访问目标url地址,打开网页getCurrentUrl()获取当前页面url地址getTitle()获取页面标题getPageSource()获取页面源码close()关闭浏览器当前打开的窗口findElement(by)查找单个元素findElements(by)查找元素列表,返回一个集合getWindowHandle()获取当前窗口句柄getWindowhandles()获取所有窗口的句柄
WebElement常用API
通过WebElement实现与网站页面上元素的交互,这些元素包含文本框、文本域、按钮、单选框、div等,WebElement提供了一系列的方法对这些元素进行操作:
方法描述click()对元素进行点击clear()清空内容(如文本框内容)sendKeys(...)写入内容与模拟按键操作isDisplayed()元素是否可见(true:可见,false:不可见)isEnabled()元素是否启用isSelected()元素是否已选择getTagName()获取元素标签名getAttribute(attributeName)获取元素对应的属性值getText()获取元素文本值(元素可见状态下才能获取到)submit()表单提交
代码案例
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;
import java.sql.SQLOutput;
public class Demo_API {
public static void main(String[] args) {
// 加载Edge浏览器驱动
WebDriver driver = new EdgeDriver();
// 打开百度首页
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 enable = inputElem.isEnabled();
System.out.println(enable);// true
// 判断元素是否被选中状态,一般用在Radio(单选),Checkbox(多选),Select(下拉框)元素上
// 在输入框中使用无意义
boolean selected = inputElem.isSelected();
System.out.println(selected);// false
// 获取标签名
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();
}
}
版权归原作者 2301_78128976 所有, 如有侵权,请联系我们删除。