Selenium的封装与重用

用过一段webdriver之后就会知道经常用到的只有几个常用的selenium API方法,大家自己可以对selenium的API进行二次封装之后每次可以直接调用封装后自己写的方法来间接调用selenium的API。

webdriver接口下的一些方法的封装
查看Selenium的官方API可知WebDriver接口在org.openqa.selenium这个包下面
而WebDriver接口下常用的方法有get()、close()、findElement()、findElements()、getText()、getAttribute、switchTo()。
1)对get()、close()方法的封装:

 WebDriver driver = new FirefoxDriver();
        // 通过url打开相应的页面
public void openBrowser(String url)
{
    driver.get(url);
}

// 关闭相应的页面
public void closeBrowser()
{
    driver.close();
} 

2)对findElement()、getText()、switchTo()封装

    // 查找到某一元素并且给予相应的值
    // 一般用在对文本输入框元素的定位和输入相应值
    public void sendKey(By by,String value)
    {
        driver.findElement(by).sendKeys(value);
    }

        // 查找到某元素并点击
    public void elementClick(By by) 
    {
       driver.findElement(by).click();
    }

         /*
         ***  先定位到相应的选择框
         ***  再定位到详细的待选项
         ***  一般用在定位下拉选择框中的某一个元素
         */
    public void selectElement(By by,String text)
    {
        Select select = new Select(driver.findElement(by));
        select.selectByVisibleText(text);
    }

        // 获取链接元素的url值
    public String getLinkUrl(By by)
    {
       return driver.findElement(by).getAttribute("href");
    }

        // 判断某个元素是否存在
public boolean isElementExist(By by)
{
    try{
        Boolean bool = driver.findElement(by).isDisplayed();
        return bool;
    }catch(NoSuchElementException e){
        return false;
    }
}

        // 获得某元素的文本描述信息
public String getWebText(By by)
{
    try {
        return driver.findElement(by).getText();
    }catch (NoSuchElementException e){
        return "Text does not exist!";
    }
}

3)findElements()相关方法的封装
/*
* 在一个元素集合中通过遍历文本内容定位到相应的元素
*/

 public void clickElementContainingText(By by,String text)
 {
    List<WebElement> elementList = driver.findElements(by);
    for(WebElement e:elementList)
    {
        if(e.getText().contains(text))
        {
           e.click();
           break;
        }
     }
  }
        /*
        *** 在一个元素集合中通过遍历文本内容获取相应的url
        */
public 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;
}

4)frame相关的方法封装
/*
* 某些元素由于属于某个iframe的需要先定义到frame然后再在此frame里边查找该元素
* 此方法适合定位文本链接型元素
*/

public void frameElementClick(By by,String text)
{
    WebElement element = driver.switchTo().frame(text).findElement(by);
    element.click();
}
   /*
    *** 某些元素由于属于某个iframe的需要先定义到frame然后再在此frame里边查找该元素
    *** 此方法适合定位文本输入框型元素
    */
public void frameElementSendKey(By by,String text)
{
    WebElement element = driver.switchTo().frame(text).findElement(by);
    element.sendKeys(text);
}  
    另外在不同frame之间切换时不要忘记使用以下方法:
   driver.switchTo().defaultContent(); 

注:大家可以把以上方法放到一个jar包里边 直接调用就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值