5.6 操作页面元素WebElement

在Selenium 1中,直接通过Selenium的各种方法来操作页面元素,但在Selenium 2中则不同,需要通过By对象先定位到对应的页面元素,然后调用这个页面元素的相关方法来进行操作。
可以通过WebDriver的FindElement()方法获得WebElement的对象实例。
在获取页面元素后,就可以对该页面元素进行各种操作了。

1  Click()
Click()方法用于执行单击元素的操作。例如,百度首页上有“登录”超级链接,要单击“登录”超级链接
WebDriver driver = new FirefoxDriver();
Navigation navigation = driver.navigate();
navigation.to(http://www.baidu.com);
WebElement baiduLogin = driver.findElement(By.LinkText("登录"));
baiduLogin.click();

在执行“WebElement baiduLogin = driver.findElement(By.LinkText("登录"));”时,程序先通过“driver.findElement(By.LinkText("登录"));”找到该按钮,然后将其赋值给变量baiduLogin。baiduLogin就是获取到的页面元素,它代表“登录”按钮,获取到它之后就可以对它进行各种操作了,例如单击操作baiduLogin.click()。
注意,在Selenium 2中没有Check/UnCheck这类方法来勾选或取消复选框和单选框,所以只能通过Click方法来进行勾选或取消勾选。
对于Selenium 2来说,因为页面元素没有Select方法,所以也只能用Click模拟实现对下拉列表框的选择。
WebDriver driver = new FirefoxDriver();
Navigation navigation = driver.navigate();
navigation.to(http://www.baidu.com);
navigation.to("http://tieba.baidu.com/f/search/adv");
WebElement select = driver.findElement(By.name("sm"));
String targetText = "按相关性排序";
java.util.List<WebElement> options = select.findElements(By.tagName("option"));
for (int i = 0; i < options.size(); i++)
{
if (options.get(i).getText().equals(targetText))
{
options.get(i).click();
}
}

实现的原理就是先找到Select元素,然后获取它的所有选项,接着遍历这些选项并找出和要选择的文本相同的选项,最后单击它。

2  SendKeys(text)
SendKeys()方法用于给input元素输入文本。要操作该文本框,需先定位该页面元素,然后使用SendKeys()方法输入指定内容
WebDriver driver = new FirefoxDriver();
Navigation navigation = driver.navigate();
navigation.to(http://www.baidu.com);
WebElement baiduTextBox = driver.findElement(By.id("kw"));
baiduTextBox.sendKeys("找到文本框");

找到文本框之后,执行“baiduTextBox.SendKeys("找到文本框");”,在搜索文本框中输入“找到文本框”。

3  Clear()
Clear()方法用于清空input元素的值。例如,百度首页有搜索文本框,可以先给文本框填入内容,然后使用Clear()将其清除,清除前先使用Thread.Sleep(3000)等待3秒,以便于观察
WebDriver driver = new FirefoxDriver();
Navigation navigation = driver.navigate();
navigation.to("http://www.baidu.com");
WebElement baiduTextBox = driver.findElement(By.id("kw"));
baiduTextBox.sendKeys("找到文本框");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
baiduTextBox.clear();


4  Submit()
Submit()方法用于对指定元素所在的form元素进行提交操作。例如,百度贴吧的登录界面,用Firebug查看它的HTML,可以看到,它由一个form组成,只要对这个from中的任何元素使用Submit()方法,都会提交这个form。例如,输入账号和密码,然后直接对密码文本框使用Submit()方法(而不是单击“登录”按钮),可以看到form数据将会提交,页面将成功登录。
WebDriver driver = new FirefoxDriver();
Navigation navigation = driver.navigate();
navigation.to(http://tieba.baidu.com/index.html);
WebElement userName = driver.findElement(By.id("pass_loginLite_input_username0"));
userName.sendKeys("这里输入您的账号");
WebElement password = driver.findElement(By.id("pass_loginLite_input_password0"));
password.sendKeys("这里输入您的密码");
password.submit();


猜你喜欢

转载自865325772.iteye.com/blog/2050637
5.6
今日推荐