一、下拉菜单识别
对下拉框的操作,主要是通过Select 类里面的方法来实现的,所以需要new 一个Select 对象(org.openqa.selenium.support.ui.Select)来进行操作
public void selectDemo() throws InterruptedException { driver.get("http://tieba.baidu.com/f/search/adv?red_tag=v3168911135"); driver.manage().window().maximize(); Select sel =new Select(driver.findElement(By.name("sm"))); // 通过下拉框value值选择 sel.selectByValue("2"); Thread.sleep(2000); // 通过下拉框索引选择第一项 sel.selectByIndex(0); Thread.sleep(2000); // 通过下拉框可见文本选择 sel.selectByVisibleText("按时间顺序");
主要的方法有:
1 boolean isMultiple() //判断下拉框是否多选模式 2 void selectByIndex(int index) //选中指定index的项,单选多选均有效,当index超出范围时,抛出NoSuchElementException异常 3 void selectByValue(String value) //选中所有Select标签中,value为指定值的所有项,单选多选均有效,当没有适合的项时,抛出NoSuchElementException异常 4 void selectByVisibleText(String text) //选中所有项的文字为指定值的项,与deselectByValue相反,但单选多选模式均有效,当没有适合的项时,抛出NoSuchElementException异常 5 void deselectAll() //取消所有选择项,仅对下拉框的多选模式有效,若下拉不支持多选模式,则会抛出异常 UnsupportedOperationException(不支持的操作) 6 void deselectByIndex(int index) //取消指定index的选择,index从零开始,仅对多选模式有效,否则抛出异常 UnsupportedOperationException(不支持的操作) 7 void deselectByValue(String value) //取消Select标签中,value为指定值的选择,仅对多选模式有效,否则抛出异常 UnsupportedOperationException(不支持的操作) 8 void deselectByVisibleText(String Text) //取消项的文字为指定值的项,例如指定值为Bar,项的html为 <option value="foo">Bar</option>,仅对多选模式有效,单选模式无效,但不会抛出异常 9 List<WebElement>getAllSelectedOptions() //获得所有选中项,单选多选模式均有效,但没有一个被选中时,返回空列表,不会抛出异常 10 WebElement getFirstSelectedOption() //获得第一个被选中的项,单选多选模式均有效,当多选模式下,没有一个被选中时,会抛出NoSuchElementException异常 11 List<WebElement>getOptions() //获得下拉框的所有项,单选多选模式均有效,当下拉框没有任何项时,返回空列表,不会抛出异常
获取下拉菜单所有的option,并判断默认选择项
1 public void mutilSelectDemo() { 2 driver.get("http://tieba.baidu.com/f/search/adv?red_tag=v3168911135"); 3 driver.manage().window().maximize(); 4 List<WebElement> lw=driver.findElement(By.name("sm")).findElements(By.tagName("option")); 5 System.out.println("总共有:"+lw.size()+" 个选项"); 6 for (int i = 0; i < lw.size(); i++) { 7 if (null!=lw.get(i)&&"按时间倒序".equals(lw.get(i).getText())) { 8 System.out.println("默认选择的是"+lw.get(i).getText()); 9 10 } 11 } 12 13 }
二、单选框、复选框--checkbox、radiobox操作
checkbox和radio,一般情况下这两种都是 input 标签,可以通过元素定位后,click()方法直接操作
1 driver.findElement(By.id("subMerType2")).click();
三、页面弹框--alert 操作
Alert弹框操作之前要先切换到Alert页面,则需要使用:org.openqa.selenium.Alert类
Alert alert = driver.switchTo().alert();
弹框的操作方法有:
- accept() // 弹框确认操作
- dismiss() // 弹框取消操作
- getText() // 获取弹框上的文本
1 driver.findElement(By.id("commit")).click(); 2 Thread.sleep(3000); 3 Alert alert =driver.switchTo().alert(); 4 System.out.println(alert.getText()); 5 alert.accept(); 6 alert.dismiss();