51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。)
程序清单5-12 Java代码
package Project1; import org.openqa.selenium.*; import org.openqa.selenium.WebDriver.*; import org.openqa.selenium.firefox.*; public class Project1Class { public static void main(String[] args) { //如果启动出现问题,可以使用System.setProperty指出firefox.exe的路径 //System.setProperty("webdriver.firefox.bin","D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); WebDriver driver = new FirefoxDriver(); Navigation navigation = driver.navigate(); navigation.to("http://www.baidu.com"); navigation.to("http://www.google.com.hk"); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } navigation.back(); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } navigation.forward(); } } |
程序清单代码执行后可以发现,程序共打开了两个页面:百度和谷歌。然后,页面先后退到了第一个页面(百度),再前进到了第二个页面(谷歌)。
5.4.3 Refresh()
使用该方法将刷新整个页面(类似于按F5的效果),多用于执行某些操作后需要刷新的情况(例如登录后页面未自动刷新),代码如程序清单5-13或程序清单5-14所示。
程序清单5-13 C#代码
using System; using OpenQA.Selenium; using OpenQA.Selenium.Firefox; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { IWebDriver driver = new FirefoxDriver(); INavigation navigation = driver.Navigate(); navigation.GoToUrl("http://www.baidu.com"); navigation.Refresh(); } } } |
程序清单5-14 Java代码
package Project1; import org.openqa.selenium.*; import org.openqa.selenium.WebDriver.*; import org.openqa.selenium.firefox.*; public class Project1Class { public static void main(String[] args) { //如果启动出现问题,可以使用System.setProperty指出firefox.exe的路径 //System.setProperty("webdriver.firefox.bin","D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); WebDriver driver = new FirefoxDriver(); Navigation navigation = driver.navigate(); navigation.to("http://www.baidu.com"); navigation.refresh(); } } |
5.5 查找条件对象By
在导航到对应页面后,就可以对页面上的元素进行操作了。然而,在进行操作之前,必须要找到相应的元素。如何才能找到这些元素呢?需要使用查找条件对象“By”进行查找。
根据HTML的不同,查找条件也各有不同。例如,可以按HTML元素的ID进行查找,也可以按Name属性查找,或者直接按HTML标签查找,接下来将列举常用的查找条件。
5.5.1 Id(idToFind)
可以按照HTML元素的ID属性进行查找。例如,百度首页有一个搜索文本框,如图5-26所示。
图5-26 百度搜索文本框
其HTML代码如下:
<input id="kw" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
如要操作该文本框,则可以通过ID(id="kw")作为查找条件获取该对象,代码如程序清单5-15或程序清单5-16所示。
程序清单5-15 C#代码
IWebDriverdriver=newFirefoxDriver(); INavigationnavigation=driver.Navigate(); navigation.GoToUrl(http://www.baidu.com); IWebElementbaiduTextBox=driver.FindElement(By.Id("kw")); baiduTextBox.SendKeys("找到文本框"); |
程序清单5-16 Java代码
WebDriver driver = new FirefoxDriver(); Navigation navigation = driver.navigate(); navigation.to(http://www.baidu.com); WebElement baiduTextBox = driver.findElement(By.id("kw")); baiduTextBox.sendKeys("找到文本框"); |
代码driver.FindElement(By.Id("kw"));表示寻找ID为“kw”的元素。
找到文本框之后,执行“baiduTextBox.SendKeys("找到文本框");”,在搜索文本框中输入“找到文本框”。
代码清单5-15和5-16的执行结果如图5-27所示。
5.5.2 Name(nameToFind)
Name方法按Name进行查找与按ID进行查找类似,例如百度首页上面有“登录”超级链接,如图5-28所示。
图5-28 “登录”超级链接
其HTML代码如下:
<a name="tj_login" href=http://passport.baidu.com/?login&tpl=mn>登录</a>
注意,它的name属性为“tj_login”,可以用其作为查找条件来获取登录链接对象,使用方法如程序清单5-17或程序清单5-28所示。
程序清单5-17 C#代码
IWebElement loginButton= driver.FindElement(By.Name("tj_login")); |
程序清单5-18 Java代码
WebElement loginButton= driver.findElement(By.name("tj_login")); |
5.5.3 LinkText(linkTextToFind)
LinkText方法按链接的文本进行查找。例如,百度首页上有“登录”超级链接,如图5-29所示。
图5-29 “登录”超级链接
它的链接文本为属性为“登录”,可以用它作为查找条件来获取登录链接对象。先打开百度页面,然后单击“登录”,代码如程序清单5-19或程序清单5-20所示。
程序清单5-19 C#代码
IWebDriver driver = new FirefoxDriver(); INavigation navigation = driver.Navigate(); navigation.GoToUrl(http://www.baidu.com); IWebElement baiduLogin = driver.FindElement(By.LinkText("登录")); baiduLogin.Click(); |
程序清单5-20 Java代码
WebDriver driver = new FirefoxDriver(); Navigation navigation = driver.navigate(); navigation.to(http://www.baidu.com); WebElement baiduLogin = driver.findElement(By.LinkText("登录")); baiduLogin.click(); |
5.5.4 PartialLinkText(partialLinkTextToFind)
PartialLinkText方法按链接的文本进行模糊查找。例如,百度首页上有“登录”超级链接,如图5-30所示。
图5-30 “登录”超级链接
它的链接文本属性为“登录”。PartialLinkText可用于模糊查询,它可以用“录”字作为查找条件来获取“登录”链接对象。先打开百度页面,然后单击“登录”超级链接,代码如程序清单5-21或程序清单5-22所示。
程序清单5-21 C#代码
IWebDriver driver = new FirefoxDriver(); INavigation navigation = driver.Navigate(); navigation.GoToUrl(http://www.baidu.com); IWebElement baiduLogin = driver.FindElement(By.PartialLinkText("录")); baiduLogin.Click(); |
程序清单5-22 Java代码
WebDriver driver = new FirefoxDriver(); Navigation navigation = driver.navigate(); navigation.to(http://www.baidu.com); WebElement baiduLogin = driver.findElement(By.partialLinkText("录")); baiduLogin.click(); |
5.5.5 ClassName(classNameToFind)
ClassName方法按链接的文本进行模糊查找。例如,百度贴吧上有“贴吧搜索”超级链接,如图5-31所示。
图5-31 “贴吧搜索”超级链接
使用FireBug查看其HTML代码,如图5-32所示。
图5-32 HTML代码
其Class属性为“j_global_search”,可以用其作为查找条件来获取“贴吧搜索”链接。先打开贴吧页面,然后单击“贴吧搜索”链接,代码如程序清单5-23或程序清单5-24所示。
程序清单5-23 C#代码
IWebDriver driver = new FirefoxDriver(); INavigation navigation = driver.Navigate(); navigation.GoToUrl(http://tieba.baidu.com/index.html); IWebElement tiebaSearch = driver.FindElement(By.ClassName("j_global_search")); tiebaSearch.Click(); |
程序清单5-24 Java代码
WebDriver driver = new FirefoxDriver(); Navigation navigation = driver.navigate(); navigation.to(http://www.baidu.com); WebElement tiebaSearch = driver.findElement(By.className("j_global_search")); tiebaSearch .click(); |
5.5.6 TagName(TagNameToFind)
TagName方法按标记名称进行查找,并返回第一个匹配项。例如,百度首页有“搜索设置”超级链接,如图5-33所示。
图5-33 登录按钮
使用FireBug查看其HTML代码,可以发现它是整个页面的第一个“a”标记,如图5-34所示。
图5-34 HTML代码
因此,可以用它的标记名称“a”作为查找条件来获取“搜索设置”链接。先打开百度主页,然后单击“搜索设置”超级链接,代码如程序清单5-25和程序清单5-26所示。
程序清单5-25 C#代码
IWebDriver driver = new FirefoxDriver(); INavigation navigation = driver.Navigate(); navigation.GoToUrl(http://tieba.baidu.com/index.html); IWebElement searchSetting = driver.FindElement(By.TagName("a")); searchSetting .Click(); |
程序清单5-26 Java代码
WebDriver driver = new FirefoxDriver(); Navigation navigation = driver.navigate(); navigation.to(http://www.baidu.com); WebElement searchSetting = driver.findElement(By.tagName("a")); searchSetting .click(); |
本文选自《Selenium自动化测试指南》第五章节,本站经人民邮电出版社和作者的授权,近期将进行部分章节的连载,敬请期待!
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
相关文章:
选择浏览器开始测试—Selenium自动化测试指南(2)
操作页面元素WebElement—Selenium自动化测试指南(4)