selenium自动化测试实例

时间:2022-06-24 15:21:38

11.1使用JavaScripExecutor单击元素

被测试网页:http://www.sogou.com Java代码 
public class NewTest {     WebDriver driver;     String baseUrl;     JavascriptExecutor js;  @Test  public void f() throws Exception {           WebElement searchInputBox=driver.findElement(By.id("query"));     WebElement searchButton=driver.findElement(By.id("stb"));     searchInputBox.sendKeys("使用javascipt语句进行页面元素的单击");     //调用等装好的JavaScipt方法来单击sogou首页的搜索按钮     JavaScriptClick(searchButton);    }  public void JavaScriptClick(WebElement element) throws Exception{      try{          //if条件判断函数参数传入的element元素是否处于可单击状态,以及是否显示在页面上          if(element.isEnabled()&&element.isDisplayed()){              System.out.println("使用JavaScipt进行页面元素的单击");              //执行JavaScipt语句argument[0].click()              ((JavascriptExecutor) driver).executeScript("arguments[0].click();",element);          }else{              System.out.println("页面上的元素无法进行单击操作");          }          //当出现异常的时候,catch语句会被执行,打印相关的异常信息和堆栈信息      }catch(StaleElementReferenceException e){          System.out.println("页面元素没有附加在网页中"+e.getStackTrace());      }catch(NoSuchElementException e){          System.out.println("页面中没有找到要操作的页面元素"+e.getStackTrace());      }catch(Exception e){          System.out.println("无法完成单击动作"+e.getStackTrace());      }  }  
代码解释:方法里面的代码实现就是一种封装,把常用的操作卸载一个函数里面,就可以很方便的重复调用,减少冗余代码的编写,提高测试代码的编写效率。 ———————————————————————————————————————————————————— 11.2在Ajax方式产生的浮动框中,单击选择包含某个关键字的选项 目的:有些被测试页面包含Ajax的局部刷新机制,并且会产生显示多条数据的浮动框,需要单击选择浮动框中包含某个关键的选项   被测试网页:http://www.sogou.comJava代码   @Test  public void f() throws Exception {           WebElement searchInputBox=driver.findElement(By.id("query"));     //WebElement searchButton=driver.findElement(By.id("stb"));     searchInputBox.click();     //将浮动框中的所有选项存储到suggetionOptions的List容器中,直接复制的xpath是://*[@id="vl"]/div[1]/ul/li[3],这里的双引号需要转义一下     //List需要进入包,刚开始引入的import java.awt.List;报错,引入import java.util.List;成功     List <WebElement>suggetionOptions=driver.findElements(By.xpath("//*[@id=\"vl\"]/div[1]/ul/li[3]"));     for(WebElement element:suggetionOptions){         if(element.getText().contains("")){             System.out.println(element.getText());             element.click();             break;         }     }  }   ———————————————————————————————————————————————————————— 11.3设置一个页面对象的属性值 目的:掌握设定页面对象的所有属性的方法,本节以设定文本框的可编辑状态和显示长度为目标。 被测试网页:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>设置文本框属性</title>
</head>
<body>
<input type="text" id="text" value="今年的西瓜相当甜" size="100">文本框
</body>
</html>
java代码 public class NewTest {     WebDriver driver;     String baseUrl;      JavascriptExecutor js;  @Test  public void f() throws Exception {           WebElement textInputBox=driver.findElement(By.id("text"));     //调用setAttribute方法修改文本框的value属性值,改变文本框中显示的文字    setAttribute(driver,textInputBox,"value","文本框的文字和长度属性已经被修改了");    //调用setAttribute方法修改文本框的size属性值,改变文本框中的长度    setAttribute(driver,textInputBox,"size","10");    //调用removeAttribute方法删除文本框中的size属性值    //removeAttribute(driver,textInputBox,"size");    //增加页面元素属性属性和修改页面元素属性的封装方法  } private void setAttribute(WebDriver driver2, WebElement textInputBox, String string, String string2) {    // TODO Auto-generated method stub     JavascriptExecutor js=(JavascriptExecutor) driver;      Object element = null;    Object attributeName = "aa";    Object value = null;    js.executeScript("arguments[0].setAttribute(arguments[1],arguments[2])",element,attributeName,value);}/*private void removeAttribute(WebDriver driver2, WebElement textInputBox, String string) {    // TODO Auto-generated method stub      JavascriptExecutor js=(JavascriptExecutor) driver;      Object element = null;    Object attributeName = null;    Object value = null;    js.executeScript("arguments[0].removeAttribute(arguments[1],arguments[2])",element,attributeName,value);    }*/ @BeforeMethod  public void beforeMethod() {      baseUrl="C:\\Users\\Administrator\\WebstormProjects\\untitled\\11.3.html";    System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");     driver=new ChromeDriver();      driver.get(baseUrl);  }