51Testing软件测试论坛

标题: 【转帖】WebDriver拾级而上(04) – 操作页面元素 [打印本页]

作者: 悠悠小仙仙    时间: 2017-7-13 13:36
标题: 【转帖】WebDriver拾级而上(04) – 操作页面元素
本帖最后由 悠悠小仙仙 于 2017-7-13 13:46 编辑

[attach]107334[/attach]
一、输入框(text field or textarea)
CODE:
  1. //找到输入框元素:
  2. WebElement element = driver.findElement(By.id("passwd-id"));
  3. //将输入框清空:
  4. element.clear();
  5. //在输入框中输入内容:
  6. element.sendKeys("test");
  7. //获取输入框的文本内容:
  8. element.getText();
复制代码
二、下拉选择框(Select)

CODE:
  1. //找到下拉选择框的元素:
  2. Select select = new Select(driver.findElement(By.id("select")));
  3. //选择对应的选择项:
  4. select.selectByVisibleText(“mediaAgencyA”);
复制代码

CODE:
  1. select.selectByValue(“MA_ID_001”);
  2.   
  3. //不选择对应的选择项:
  4. select.deselectAll();
  5. select.deselectByValue("MA_ID_001");
  6. select.deselectByVisibleText("mediaAgencyA");
复制代码
或者获取选择项的值:

CODE:
  1. select.getAllSelectedOptions();
  2. select.getFirstSelectedOption();
复制代码

对下拉框进行操作时首先要定位到这个下拉框,new 一个Selcet对象,然后对它进行操作
例如:

CODE:
  1. 以http://passport.51.com/reg2.5p这个页面为例。这个页面中有4个下拉框,下面演示4种选中下拉框选项的方法。
  2. import org.openqa.selenium.By;
  3. import org.openqa.selenium.WebDriver;
  4. import org.openqa.selenium.WebElement;
  5. import org.openqa.selenium.firefox.FirefoxDriver;
  6. import org.openqa.selenium.support.ui.Select;

  7. public class SelectsStudy {
  8.     public static void main(String[] args) {
  9.         System.setProperty("webdriver.firefox.bin","D:\\Program Files\\Mozilla Firefox\\firefox.exe");
  10.         WebDriver dr = new FirefoxDriver();
  11.         dr.get("http://passport.51.com/reg2.5p");
  12.         
  13.         //通过下拉列表中选项的索引选中第二项,即2011年
  14.         Select selectAge = new Select(dr.findElement(By.id("User_Age")));
  15.         selectAge.selectByIndex(2);//Select.selectByIndex
  16.         
  17.         //通过下拉列表中的选项的value属性选中"上海"这一项
  18.         Select selectShen = new Select(dr.findElement(By.id("User_Shen")));
  19.         selectShen.selectByValue("上海");//Select.selectByValue
  20.         
  21.         //通过下拉列表中选项的可见文本选 中"浦东"这一项
  22.         Select selectTown = new Select(dr.findElement(By.id("User_Town")));
  23.         selectTown.selectByVisibleText("浦东");Select.selectByVisibleText
  24.         
  25.         //这里只是想遍历一下下拉列表所有选项,用click进行选中选项
  26.         Select selectCity = new Select(dr.findElement(By.id("User_City")));
  27.         for(WebElement e : selectCity.getOptions())//Select.getOptions()
  28.             e.click();
  29.     }
  30. }
复制代码
三、单选项(Radio Button)
CODE:
  1. //找到单选框元素:
  2. WebElement bookMode =driver.findElement(By.id("BookMode"));
  3. //选择某个单选项:
  4. bookMode.click();
  5. //清空某个单选项:
  6. bookMode.clear();
  7. //判断某个单选项是否已经被选择:
  8. bookMode.isSelected();
复制代码
四、多选项(checkbox)

CODE:
  1. //多选项的操作和单选的差不多:
  2. WebElement checkbox =driver.findElement(By.id("myCheckbox."));
  3. checkbox.click();
  4. checkbox.clear();
  5. checkbox.isSelected();
  6. checkbox.isEnabled();
复制代码
五、按钮(button)

CODE:
  1. //找到按钮元素:
  2. WebElement saveButton = driver.findElement(By.id("save"));
  3. //点击按钮:
  4. saveButton.click();
  5. //判断按钮是否enable:
  6. saveButton.isEnabled ();
复制代码

六、左右选择框也就是左边是可供选择项,选择后移动到右边的框中,反之亦然。
例如:

CODE:
  1. Select lang = new Select(driver.findElement(By.id("languages")));
  2. lang.selectByVisibleText(“English”);
  3. WebElement addLanguage =driver.findElement(By.id("addButton"));
  4. addLanguage.click();
复制代码
七、弹出对话框(Popup dialogs)

CODE:
  1. Alert alert = driver.switchTo().alert();
  2. alert.accept();
  3. alert.dismiss();
  4. alert.getText();
复制代码

八、表单(Form)Form中的元素的操作和其它的元素操作一样,对元素操作完成后对表单的提交可以:

CODE:
  1. WebElement approve = driver.findElement(By.id("approve"));
  2. approve.click();
复制代码

CODE:
  1. approve.submit();//只适合于表单的提交
复制代码

九、上传文件 (Upload File)上传文件的元素操作:

CODE:
  1. WebElement adFileUpload = driver.findElement(By.id("WAP-upload"));
  2. String filePath = "C:\test\\uploadfile\\media_ads\\test.jpg";
  3. adFileUpload.sendKeys(filePath);
复制代码
十、拖拉(Drag andDrop)

CODE:
  1. WebElement element =driver.findElement(By.name("source"));
  2. WebElement target = driver.findElement(By.name("target"));
  3. (new Actions(driver)).dragAndDrop(element, target).perform();
复制代码
例如:下面这个页面是一个演示拖放元素的页面,你可以把左右页面中的条目拖放到右边的div框中。
http://koyoz.com/demo/html/drag-drop/drag-drop.html

CODE:
  1. import org.openqa.selenium.By;
  2. import org.openqa.selenium.WebDriver;
  3. import org.openqa.selenium.WebElement;
  4. import org.openqa.selenium.firefox.FirefoxDriver;
  5. import org.openqa.selenium.interactions.Actions;

  6. public class DragAndDrop {
  7.     public static void main(String[] args) {
  8.         System.setProperty("webdriver.firefox.bin","D:\\Program Files\\Mozilla Firefox\\firefox.exe");
  9.         WebDriver dr = new FirefoxDriver();
  10.         dr.get("http://koyoz.com/demo/html/drag-drop/drag-drop.html");
  11.         
  12.         //首先new出要拖入的页面元素对象和目标对象,然后进行拖入。
  13.         WebElement  element = dr.findElement(By.id("item1"));
  14.         WebElement  target = dr.findElement(By.id("drop"));
  15.         (new Actions(dr)).dragAndDrop(element, target).perform();
  16.         
  17.         //利用循环把其它item也拖入
  18.         String id="item" ;
  19.         for(int i=2;i<=6;i++){
  20.             String item = id+i;
  21.             (new Actions(dr)).dragAndDrop(dr.findElement(By.id(item)), target).perform();
  22.         }
  23.     }
  24. }
复制代码

代码很简单,需要注意的是(new Actions(dr)).dragAndDrop(element, target).perform();这句话中,dragAndDrop(element, target)这个方法是定义了“点击element元素对象,然后保持住,直到拖到目标元素对象里面才松开”这一系列动作的Actions,如果你不调用perform()方法,这个Actions是不会执行的。
十一、导航 (Navigationand History)
CODE:
  1. //打开一个新的页面:
  2. driver.navigate().to("http://www.example.com");
  3. //通过历史导航返回原页面:
  4. driver.navigate().forward();
  5. driver.navigate().back();
复制代码


作者: 八戒你干嘛    时间: 2017-7-13 17:04
楼分享的东西蛮实用的




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2