Selenium 封裝
Selenium 封裝
WebDriver對頁面的操作,需要找到一個WebElement,然后再對其進行操作,比較繁瑣:
- WebElement element =driver.findElement(By.name("q"));
- element.sendKeys("Cheese!");
我們可以考慮對這些基本的操作進行一個封裝,簡化操作。比如,封裝代碼:
- protected void sendKeys(By by, String value){
- driver.findElement(by).sendKeys(value);
- }
那么,在測試用例可以這樣調用:
sendKeys(By.name("q"),”Cheese!”);
類似的封裝還有:
- import java.util.List;
- import java.util.NoSuchElementException;
- import java.util.concurrent.TimeUnit;
- import org.openqa.selenium.By;
- import org.openqa.selenium.WebElement;
- import org.openqa.selenium.remote.RemoteWebDriver;
- import org.openqa.selenium.support.ui.WebDriverWait;
- public class DriverAction {
- protected RemoteWebDriver driver;
- protected WebDriverWait driverWait;
- private int WAIT_ELEMENT_TO_LOAD=10;
- protected boolean isWebElementExist(By selector) {
- try {
- driver.findElement(selector);
- return true;
- } catch(NoSuchElementException e) {
- return false;
- }
- }
- protected String getWebText(By by) {
- try {
- return driver.findElement(by).getText();
- } catch (NoSuchElementException e) {
- return "Text not existed!";
- }
- }
- protected void clickElementContainingText(By by, String text){
- List<WebElement>elementList = driver.findElements(by);
- for(WebElement e:elementList){
- if(e.getText().contains(text)){
- e.click();
- break;
- }
- }
- }
- protected String getLinkUrlContainingText(By by, String text){
- List<WebElement>subscribeButton = driver.findElements(by);
- String url = null;
- for(WebElement e:subscribeButton){
- if(e.getText().contains(text)){
- url =e.getAttribute("href");
- break;
- }
- }
- return url;
- }
- protected void click(By by){
- driver.findElement(by).click();
- driver.manage().timeouts().implicitlyWait(WAIT_ELEMENT_TO_LOAD,TimeUnit.SECONDS);
- }
- protected String getLinkUrl(By by){
- return driver.findElement(by).getAttribute("href");
- }
- protected void sendKeys(By by, String value){
- driver.findElement(by).sendKeys(value);
- }
- }