Selenium(一)6.定位元素

  前面文章介绍了dirver操作浏览器的一些接口方法。本章将开始介绍页面元素定位的方法,UI自动化的核心就是找到想要的网页元素,并且去操作相应的元素。
  在页面中使用F12快捷键调出控制台,这里百度界面的输入框输入内容为例:
在这里插入图片描述

如果你想获取某个元素的内容,可以使用元素旁边的两个快捷方式去选择。

定位元素八大方法

1.WebElement element = driver.findElement(By.id(“kw”));

  通过元素id定位,对于 Web 页面,id 是最理想的定位方式,一般前端 HTML 代码都会尽量保证 id 的唯一性。
在这里插入图片描述
应用:

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

/**
 * @author Mingze
 * @version 1.0
 */
public class FindElement {
    public static void main(String[] args) throws InterruptedException {

        ChromeDriver driver = new ChromeDriver();
        driver.get("https://www.baidu.com");//跳转到百度页面
        //By.id
        driver.findElement(By.id("kw"))//通过id定位输入框
                .sendKeys("Java");//# 向输入框写入"java"
        Thread.sleep(3000);//傻瓜等待3s
        driver.navigate().refresh();//刷新页面
    }
}

2.WebElement element = driver.findElement(By.name(“//*[@id=“kw”]”));

在这里插入图片描述

  通过元素name属性定位,但是name属性的值不一定是唯一的,如果遇到多个元素name属性值一样,默认定位第一个元素。

应用:

//By.name
        driver.findElement(By.name("wd"))//跳转到百度页面
				.sendKeys("java");//通过id定位输入框
        Thread.sleep(3000);//傻瓜等待3s
        driver.navigate().refresh();;//刷新页面

3.WebElement element = driver.findElement(By.className(“s_ipt”));

在这里插入图片描述
应用:

  driver.findElement(By.className("s_ipt"))
                .sendKeys("java");
        Thread.sleep(3000);
        driver.navigate().refresh();

一般不建议使用该方法定位:

  • class属性不是唯一的
  • class 属性存在复合类:以下这段 class 属性就是一个复合类,每个类用空格分隔,如果通过全匹配定位,程序会报错
    在这里插入图片描述

4.WebElement element = driver.findElement(By.xpath(“//*[@id=“kw”]”));

使用工具定位到输入栏后,右键copy->copy xpth 获取xpth属性
应用:

 driver.findElement(By.xpath("//*[@id=\"kw\"]"))
                .sendKeys("java");
        Thread.sleep(3000);
        driver.navigate().refresh();

个人很喜欢使用xpth定位:快,准,稳
Xpth学习链接:Xpth

5.WebElement element = driver.findElement(By.cssSelector(“button, input, select, textarea”));

在这里插入图片描述
应用:

	driver.findElement(By.cssSelector("button, input, select, textarea"))
                .sendKeys("java");
        Thread.sleep(3000);
        driver.navigate().refresh();

  很多人说css表达式定位元素要比XPath表达式要快,由于我也不是很了解,所以我之前一直用XPath来定位元素。看个人实际情况,如果你css表达式写得比XPath还熟练,那么你就用css表达式去定位元素。
cssSelector:学习链接

6.WebElement element = driver.findElement(By.linkText(“新闻”));

在这里插入图片描述

应用:

driver.findElement(By.linkText("新闻"))//定位新闻元素
                .click();//点击操作
        Thread.sleep(3000);
        driver.navigate().refresh();

部分文字描述会对应一个链接,点击文字之后就会跳转到对应的页面

7. WebElement element = driver.findElement(By.tagName(“input”));

在这里插入图片描述
应用:

//通过标签名称查找元素,在DOM页面当中,匹配到的第一个元素
        driver.findElement(By.tagName("input"));

因为没有唯一的Tag_name,一般不会用得到

8.WebElement element = driver.findElement(By. partialLinkText( “搜索” ));

Linktext是具体搜索,而partialLinkText是模糊搜索
应用:

driver.findElement(By.partialLinkText("闻")).click();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值