selenium常用API的使用

刺骨的言语ヽ痛彻心扉 2024-03-23 18:02 156阅读 0赞

目录

定位元素(findElement)

CSS选择器定位

xpath选择器定位

CSS选择器和xpath选择器区别

操作测试对象

click:点击

sendKeys:输入文本框内容

clear:清除文本框内容

text:获取元素文本内容

getText()(获取一般文本内容)

getAttribute() (获取属性(value))

submit:提交

submit和click的区别


定位元素(findElement)

CSS选择器定位

首先找到指定的页面,找到后确认要定位的元素:如百度搜索首页的搜索框

1f3dfbb748e9496f95d28a7916352d3b.png打开开发者工具,点击元素:

83489a7040c646d59078c118845d118d.png 找到对应的类,将类名复制下来,调用webdriver的findElement方法,通过By将类传入(使用css选择器)

  1. WebElement element = webDriver.findElement(By.cssSelector(".s_ipt"));

在文本框中输入使用sendKeys方法即可:

  1. import org.openqa.selenium.By;
  2. import org.openqa.selenium.WebDriver;
  3. import org.openqa.selenium.WebElement;
  4. import org.openqa.selenium.chrome.ChromeDriver;
  5. import org.openqa.selenium.chrome.ChromeOptions;
  6. public class Main {
  7. public static void main(String[] args) {
  8. ChromeOptions options=new ChromeOptions();
  9. options.addArguments("--remote-allow-origins=*");
  10. WebDriver webDriver=new ChromeDriver(options);
  11. webDriver.get("https://www.baidu.com/");
  12. //定位元素
  13. //找到百度搜索框
  14. WebElement element = webDriver.findElement(By.cssSelector(".s_ipt"));
  15. //输入软件测试
  16. element.sendKeys("软件测试");
  17. }
  18. }

点击运行后会先打开Chrome浏览器百度搜索页面,之后在文本框输入“软件测试”进行搜索

961d5924644b4ca2b06270c426d4926e.png

更多使用css选择器的方法:(了解)

id选择器(#id)

0493c497b9044a50b6606fb629a5fa9a.png

类选择(class)

41fe4ffb8628470a932fcc0cb07c152b.png

标签选择(标签名)

4815c710225e4effa39a0b19f058b963.png

后代选择 (父级选择器,子级选择器)等等

xpath选择器定位

xpath选择器定位和css选择器定位类似,右键标签进行复制xpath

0faf1767ae7f422cb30a93b6c520fb7f.png

  1. WebElement element=webDriver.findElement(By.xpath("//*[@id=\"kw\"]"));

xpath定位的几个用法:

绝对路径(/html/head/title(不常用))

2c69249cf03c44ad86c307fb1722ce6b.png

相对路径

相对路径+索引(//form/span[1]/input)

2acaa82814c54c5f8da5d3743de917a8.png

相对路径+属性值(//input[@class=”s_ipt”])

3c44a10cb6274aa8819ae44b2e210798.png

相对路径+通配符 (//*[@*=”su”])

275e646939f34618a4485a886f7861a4.png

相对路径+文本匹配(//a[text()=”新闻”])

edfd491d33fe428185eeff228e7e560c.png

CSS选择器和xpath选择器区别

首先css选择器效率比xpath选择器高(css是和html捆绑的,xpath是和DOM捆绑的(DOM是js和html的中介))

其次xpath功能上要比css更强大,比如xpath可以选中多个元素,支持文本定位和上下移动。

操作测试对象

selenium中操作测试对象常用的有以下几种:

click:点击

如在百度搜索框输入“软件测试”后点击百度一下:

  1. WebElement element=webDriver.findElement(By.xpath("//*[@id=\"kw\"]"));
  2. //输入软件测试
  3. element.sendKeys("软件测试");
  4. //找到百度一下按钮
  5. //进行点击
  6. webDriver.findElement(By.cssSelector("#su")).click();

sendKeys:输入文本框内容

如在百度搜索框输入“软件测试”

  1. WebElement element=webDriver.findElement(By.xpath("//*[@id=\"kw\"]"));
  2. //输入软件测试
  3. element.sendKeys("软件测试");

clear:清除文本框内容

如在百度搜索框中输入“软件测试”后点击百度一下,然后将文本框清除,输入“前端vue”进行搜索

  1. private static void test02() throws InterruptedException {
  2. ChromeOptions options=new ChromeOptions();
  3. options.addArguments("--remote-allow-origins=*");
  4. WebDriver webDriver=new ChromeDriver(options);
  5. webDriver.get("https://www.baidu.com/");
  6. webDriver.findElement(By.cssSelector("#kw")).sendKeys("软件测试");
  7. webDriver.findElement(By.cssSelector("#su")).click();
  8. webDriver.findElement(By.cssSelector("#kw")).clear();
  9. sleep(3000);
  10. webDriver.findElement(By.cssSelector("#kw")).sendKeys("前端vue");
  11. webDriver.findElement(By.cssSelector("#su")).click();
  12. }

text:获取元素文本内容

getText()(获取一般文本内容)

如获取百度搜索首页的百度热搜第一条:

878e5f70ae1e45da917da01e22336913.png

  1. private static void test03() {
  2. ChromeOptions options=new ChromeOptions();
  3. options.addArguments("--remote-allow-origins=*");
  4. WebDriver webDriver=new ChromeDriver(options);
  5. webDriver.get("https://www.baidu.com/");
  6. //获取到百度热搜第一条的内容
  7. String res = webDriver.findElement(By.xpath("//*[@id=\"hotsearch-content-wrapper\"]/li[1]/a/span[2]"))
  8. .getText();
  9. System.out.println(res);
  10. }

64f46d1e38f5440f966d24fce6c02f35.png

getAttribute() (获取属性(value))

在getAttribute当中传入name,可以获取到value

  1. private static void test04() {
  2. ChromeOptions options=new ChromeOptions();
  3. options.addArguments("--remote-allow-origins=*");
  4. WebDriver webDriver=new ChromeDriver(options);
  5. webDriver.get("https://www.baidu.com/");
  6. //获取百度一下的value值
  7. String res= webDriver.findElement(By.cssSelector("#su")).getAttribute("value");
  8. System.out.println(res);
  9. }

bf335b528cd94ba6b6dc63d2d52e8178.png

53f72818dd0f494aa29ccee8af462b0c.png

submit:提交

使用submit搜索“软件测试”:

912f98df871f40139fab8311f8650546.png

  1. private static void test05() {
  2. ChromeOptions options=new ChromeOptions();
  3. options.addArguments("--remote-allow-origins=*");
  4. WebDriver webDriver=new ChromeDriver(options);
  5. webDriver.get("https://www.baidu.com/");
  6. WebElement element=webDriver.findElement(By.cssSelector("#kw"));
  7. element.sendKeys("软件测试");
  8. webDriver.findElement(By.cssSelector("#su")).submit();
  9. }

825c38c9e892406e80d932ee707d1656.png

但是当使用submit点击超链接的按钮时: 比如新闻时

536082b15fae42df8e7bde3afd594166.png

  1. private static void test06() {
  2. ChromeOptions options=new ChromeOptions();
  3. options.addArguments("--remote-allow-origins=*");
  4. WebDriver webDriver=new ChromeDriver(options);
  5. webDriver.get("https://www.baidu.com/");
  6. webDriver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)")).submit();
  7. }

结果会出现报错!!!

2b45bace50a64f03baf350634c092dbc.png

这是因为submit不支持超链接。

submit和click的区别

可以使用submit的地方都可以使用click,但是使用click的地方不一定可以使用submit。因为click支持文本框,超链接等等,而submit则不支持超链接。

发表评论

表情:
评论列表 (有 0 条评论,156人围观)

还没有评论,来说两句吧...

相关阅读