查找条件对象By—Selenium自动化测试指南(3)

查找条件对象By—Selenium自动化测试指南(3)

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所示。

 

查找条件对象By—Selenium自动化测试指南(3)_第1张图片



  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所示。

查找条件对象By—Selenium自动化测试指南(3)_第2张图片

  图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所示。

查找条件对象By—Selenium自动化测试指南(3)_第3张图片

  图5-33  登录按钮

  使用FireBug查看其HTML代码,可以发现它是整个页面的第一个“a”标记,如图5-34所示。

查找条件对象By—Selenium自动化测试指南(3)_第4张图片

  图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)


你可能感兴趣的:(查找条件对象By—Selenium自动化测试指南(3))