0


selenium - java版本

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();
    }
}
标签: dubbo

本文转载自: https://blog.csdn.net/2301_78128976/article/details/140381873
版权归原作者 2301_78128976 所有, 如有侵权,请联系我们删除。

“selenium - java版本”的评论:

还没有评论