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);
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
封装 Selenium 的常用方法可以提高代码的可维护性和重用性。以下是一些常见的封装方法: 1. 初始化 WebDriver:封装一个初始化 WebDriver 的方法,可以根据需求选择不同的浏览器驱动,例如 Chrome、Firefox、Safari 等。 2. 打开网页:封装一个打开网页的方法,接受一个 URL 参数,可以通过 WebDriver 的 `get` 方法实现。 3. 定位元素:封装一个定位元素的方法,可以根据不同的定位方式(如 ID、class name、XPath 等)定位元素,并返回 WebElement 对象。 4. 输入文本:封装一个输入文本的方法,接受两个参数:要输入的文本和要输入的元素。可以使用 WebElement 的 `send_keys` 方法实现。 5. 点击元素:封装一个点击元素的方法,接受一个参数:要点击的元素。可以使用 WebElement 的 `click` 方法实现。 6. 获取元素文本:封装一个获取元素文本的方法,接受一个参数:要获取文本的元素。可以使用 WebElement 的 `text` 属性获取元素文本。 7. 获取元素属性:封装一个获取元素属性的方法,接受两个参数:要获取属性的元素和属性名称。可以使用 WebElement 的 `get_attribute` 方法获取元素属性。 8. 等待元素加载:封装一个等待元素加载的方法,接受两个参数:要等待的元素和最大等待时间。可以使用 WebDriverWait 的 `until` 方法实现。 以上是一些常用的封装方法,你可以根据需要进行扩展和修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值