java+Selenium元素定位

1.查看页面元素
以百度为例
在这里插入图片描述
找到元素后右键->copy->copy xpath
可以看到页面元素有:id=“kw” class=“s_ipt” name=“wd”
2.Id定位
find_element_by_id()
3.name定位: find_element_by_name()
4.class定位:find_element_by_class_name()
5.tag定位:find_element_by_tag_name()
如果懂HTML知识,我们就知道HTML是通过tag来定义功能的,比如input是输入,table是表格,等等…。每个元素其实就是一个tag,一个tag往往用来定义一类功能,我们查看百度首页的html代码,可以看到有很多div,input,a等tag,所以很难通过tag去区分不同的元素。基本上在我们工作中用不到这种定义方法,仅了解就行。
6.link定位:find_element_by_link_text()
此种方法是专门用来定位文本链接的,比如百度首页右上角有“新闻”,“hao123”,“地图”等链接
在这里插入图片描述
7、xpath定位:find_element_by_xpath()
前面介绍的几种定位方法都是在理想状态下,有一定使用范围的,那就是:在当前页面中,每个元素都有一个唯一的id或name或class或超链接文本的属性,那么我们就可以通过这个唯一的属性值来定位他们。
但是在实际工作中并非有这么美好,有时候我们要定位的元素并没有id,name,class属性,或者多个元素的这些属性值都相同,又或者刷新页面,这些属性值都会变化。那么这个时候我们就只能通过xpath或者CSS来定位了

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class elementLocation {
    public static void main(String[] args) throws InterruptedException {
        //创建chromedrive对象
        WebDriver driver = new ChromeDriver();
        //打开百度首页
        driver.navigate().to("https://www.baidu.com");
        //1.通过id定位搜索框,输入selenium
        //WebElement searchInput = driver.findElement(By.id("kw"));
        //2.通过Name定位搜索框,输入selenium
        //WebElement searchInput = driver.findElement(By.name("wd"));
        //3.class定位:find_element_by_class_name()
        //WebElement searchInput = driver.findElement(By.className("s_ipt"));
        //7.xpath定位:find_element_by_xpath()
        WebElement searchInput = driver.findElement(By.xpath("//*[@id='kw']"));
        searchInput.sendKeys("selenium");
        //递交搜索请求
        searchInput.submit();
        //WebElement searchBtn = driver.findElement(By.className("btn"));
        //searchBtn.click();
        //6.link定位:find_element_by_link_text()
        //driver.findElement(By.linkText("新闻")).click();
        //等待固定时间
        Thread.sleep(3000);
        //关闭浏览器窗口
       driver.quit();

    }
}

7.1 XPath定位
7.1.1 xpath是什么意思?
xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。
7.1.2 xpath定位缺点
xpath 这种定位方式, webdriver会将整个页面的所有元素进行扫描以定位我们所需要的元素, 这是个非常费时的操作, 如果脚本中大量使用xpath做元素定位的话, 脚本的执行速度可能会稍慢
7.1.2.1 绝对路径定位方式
XPath的表达式
/html/body/div/input[@value=“查询”]
绝对路径缺点
一旦页面结构发生改变,改路径也随之失效,必须重新。 所以不推荐使用绝对路径的写法
绝对路径和相对路径的区别
绝对路径 以 “/” 开头, 让xpath 从文档的根节点开始解析
相对路径 以"//" 开头, 让xpath 从文档的任何元素节点开始解析
7.1.2.2 相对路径定位方式

WebElement search = driver.findElement(By.xpath("//*[@id = 'kw']"));
WebElement search = driver.findElement(By.xpath("//*[@name = 'wd']"));
WebElement search = driver.findElement(By.xpath("//input[@class = 's_ipt']"));
WebElement search = driver.findElement(By.xpath("//span[@class = 'soutu-btn']/input"));
在这里插入代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸宁七s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值