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();
    }
}
  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值