抢购神器,Selenium各种操作你知道吗?

 Selenium是一个自动化测试工具且十分强大的Web应用自动化框架。利用它可以驱动浏览器执行特定的动作,如点击、下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬。它能模拟用户与浏览器进行交互,我们可以通过它来自动操控浏览器。

 

本文主要使用的环境为

  1. Jdk:1.8,
  2. selenium-java:4.7.1
<dependency>

    <groupId>org.seleniumhq.selenium</groupId>

    <artifactId>selenium-java</artifactId>

    <version>4.7.1</version>

</dependency>

下面就直接开始介绍有那些常用操作吧!

  • 创建浏览器对象
ChromeDriver browser = new ChromeDriver();

EdgeDriver edgeDriver = new EdgeDriver();

FirefoxDriver firefoxDriver = new FirefoxDriver();

InternetExplorerDriver internetExplorerDriver = new InternetExplorerDriver();

SafariDriver safariDriver = new SafariDriver();
  • 跳转页面
driver.get(url); 请求一个页面,不支持前进和后退切换

driver.navigate().to(url); 和get类似,支持前进和后退切换

driver.navigate().back(); 退到上一个页面 ,前提必须前进了一个页面才能回退

driver.navigate().forward(); 指前进到下一个页面 ,前提是必须后退后才能前进

driver.navigate().refresh(); 刷新当前页面
  • 获取页面元素

方法描述参数示例

findElement(By.id())通过元素的 id 属性值来定位元素对应的id属性值findElement(By.id("order_id"))

findElement(By.name())通过元素的 name 属性值来定位元素对应的name值findElement(By.name("user"))

findElement(By.className())通过元素的 class 名来定位元素对应的class类名findElement(By.className("order_class"))

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='order_id']"))

findElement(By.cssSelector())通过css选择器来定位元素css元素选择器findElement(By.cssSelector("#order_id"))

同时还有提供复数形式的API,用于返回多个数据的集合。
  • 使用案例展示
<html>

  <head>

  <body link="#0000cc">

<a id="go_cart" href="/" >

<a class="news" href="http://news.baidu.com" name="baidu_news">新闻</a>

<form id="form" class="order_form"  name="form_name" action="/payOrder">

<div class=”order_div”>

<span class="go-btn">立即够买</span>

        <input id="order_id" class="order_class" name="order_name" value="" />

</div>

    </form>

  </body>

</html>

我们的目的是要定位input标签的输入框。

通过id定位:

driver.findElement(By.id("order_id"))

通过name定位:

driver.findElement(By.name("order_name"))

通过class name定位:

driver.findElement(By.className("order_class"))

通过tag name定位:

driver.findElement(By.tagName("input"))

通过xpath定位,xpath定位有N种写法,这里列几个常用写法:

driver.findElement(By.xpath("//*[@id='order_id']")) // id定位

driver.findElement(By.xpath("//*[@name='order_name']")) // 属性值定位

driver.findElement(By.xpath("//input[@class='order_class']")) // class属性定位

driver.findElement(By.xpath("/html/body/form/input")) // 绝对路径定位

driver.findElement(By.xpath("//div[@class='order_div']/input")) // 相对路径定位

driver.findElement(By.xpath("//input[@id='order_id' and @name='order_name']")) // 多组合属性定位

获取span元素

driver.findElement(By.xpath("//span[text()='立即够买']")) // 文本定位

driver.findElement(By.xpath("//span[contains(text(),'立即够买')]")) // 是否包含文本获取到span元素

接下来,我们的页面上有一组文本链接。

通过linkText定位:

driver.findElement(By.linkText("新闻")

通过 partialLinkText 定位:

driver.findElement(By.partialLinkText("新")
  • WebElement 常用 API

通过 WebElement 实现与网站页面上元素的交互,这些元素包含文本框、文本域、按钮、单选框、div等,WebElement提供了一系列的方法对这些元素进行操作:

方法 描述

click() 对元素进行点击

clear() 清空内容(如文本框内容)

sendKeys(...) 写入内容与模拟按键操作

isDisplayed() 元素是否可见(true:可见,false:不可见)

isEnabled() 元素是否启用

isSelected() 元素是否已选择

getTagName() 获取元素标签名

getAttribute(attributeName) 获取元素对应的属性值

getText() 获取元素文本值(元素可见状态下才能获取到)

submit() 表单提交

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值