WebDriver拾级而上·之十 封装与重用

本文介绍如何通过封装常用WebDriver操作来简化测试用例的编写过程,包括查找元素、发送文本、点击元素等,并提供了具体的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WebDriver对页面的操作,需要找到一个WebElement,然后再对其进行操作,比较繁琐:
<wbr><wbr>// Find the text inputelement by its name</wbr></wbr>
<wbr><wbr></wbr></wbr> <wbr></wbr>WebElement element = driver.findElement(By.name("q"));

<wbr><span style="word-wrap:normal; word-break:normal; line-height:21px"><wbr><wbr></wbr></wbr></span><span style="word-wrap:normal; word-break:normal; line-height:21px"><wbr></wbr></span>// Enter something to search for</wbr>
<wbr><wbr></wbr></wbr> <wbr></wbr>element.sendKeys("Cheese!");

我们可以考虑对这些基本的操作进行一个封装,简化操作。比如,封装代码:
<wbr><wbr>protected void<span style="word-wrap:normal; word-break:normal; line-height:21px; color:rgb(14,1,254)">sendKeys</span>(By by, String value){</wbr></wbr>
<wbr><wbr><wbr><wbr><span style="word-wrap:normal; word-break:normal; line-height:21px; color:rgb(16,3,255)">driver.findElement(<span style="word-wrap:normal; word-break:normal; line-height:21px; color:rgb(34,177,76)">by</span>).sendKeys(<span style="word-wrap:normal; word-break:normal; line-height:21px; color:rgb(34,177,76)">value</span>);</span></wbr></wbr></wbr></wbr>
<wbr><wbr>}</wbr></wbr>

那么,在测试用例可以这样简化调用:
<wbr><wbr></wbr></wbr> <wbr></wbr> sendKeys(By.name("q"),"Cheese!");
看,这就简洁多了。
<wbr><br><br></wbr>
类似的封装还有:
package com.drutt.mm.end2end.actions;
<wbr></wbr>
import java.util.List;
import java.util.NoSuchElementException;
import java.util.concurrent.TimeUnit;
<wbr></wbr>
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
<wbr></wbr>
import com.drutt.mm.end2end.data.TestConstant;
<wbr></wbr>
public class WebDriverAction {
<wbr></wbr>
<wbr><wbr>//protected WebDriverdriver;</wbr></wbr>
<wbr><wbr>protected RemoteWebDriverdriver;</wbr></wbr>
<wbr><wbr>protected WebDriverWaitdriverWait;</wbr></wbr>
<wbr></wbr>
<wbr></wbr>
<wbr><wbr>protected booleanisWebElementExist<wbr>(By selector) {<wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>try {<wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>driver.findElement(selector);</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>return true;<wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>} catch(NoSuchElementException e) {<wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>return false;<wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>}<wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>}<wbr></wbr></wbr></wbr>
<wbr><wbr><wbr></wbr></wbr></wbr>
<wbr><wbr>protected StringgetWebText(By by) {<wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>try {<wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>return driver.findElement(by).getText();</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>} catch (NoSuchElementException e) {<wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>return "Textnot existed!";<wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>}<wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>}<wbr></wbr></wbr></wbr>
<wbr><wbr><wbr></wbr></wbr></wbr>
<wbr><wbr>protected voidclickElementContaini<wbr>ngText(By by, String text){</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>List&lt;WebElement&gt;elementList = driver.findElements(by);</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>for(WebElement e:elementList){</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>if(e.getText().contains(text)){</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>e.click();</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>break;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>} <wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>}</wbr></wbr>
<wbr><wbr><wbr></wbr></wbr></wbr>
<wbr><wbr>protected StringgetLinkUrlContaini<wbr>ngText(By by, String text){</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>List&lt;WebElement&gt;subscribeButton = driver.findElements(by);</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>String url = null;</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>for(WebElement e:subscribeButton){</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>if(e.getText().contains(text)){</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>url =e.getAttribute("href");</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>break;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>}</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>return url;</wbr></wbr></wbr></wbr>
<wbr><wbr>}</wbr></wbr>
<wbr><wbr><wbr></wbr></wbr></wbr>
<wbr><wbr>protected void click(Byby){</wbr></wbr>
<wbr><wbr><wbr><wbr>driver.findElement(by).click();</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>driver.manage().timeouts().implicitlyWait(TestConstant.WAIT_ELEMENT_TO_LOAD,TimeUnit.SECONDS);<wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>}</wbr></wbr>
<wbr></wbr>
<wbr><wbr>protected StringgetLinkUrl(By by){</wbr></wbr>
<wbr><wbr><wbr><wbr>return driver.findElement(by).getAttribute("href");</wbr></wbr></wbr></wbr>
<wbr><wbr>}</wbr></wbr>
<wbr><wbr><wbr></wbr></wbr></wbr>
<wbr><wbr>protected void sendKeys(Byby, String value){</wbr></wbr>
<wbr><wbr><wbr><wbr>driver.findElement(by).sendKeys(value);</wbr></wbr></wbr></wbr>
<wbr><wbr>}</wbr></wbr>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值