• 1
  • 2
分享
  • Selenium WebDriver上创建WebDriver测试脚本
  • 恬恬圈 2019-08-27 10:02:01 字数 4996 阅读 3233 收藏 2

本文实现一个WebDriver测试脚本,介绍WebDrive的常用命令、UI元素定位的策略以及在脚本中的使用,还有Get命令。

你将学到:

· 脚本创建

· 代码走查

· 测试执行

· 定位Web元素

· 定位符类型及其语法

· 总结


一、脚本创建

脚本创建部分仍然使用之前创建的“Learning Selenium”项目和“gmail.com”作为被测试应用程序(AUT)。

场景:

启动浏览器,打开“Gmail.com”。

验证页面标题并打印验证结果。

输入用户名和密码。

单击登录按钮。

关闭web浏览器。

步骤1:在“Learning Selenium”项目下创建一个名为“Gmail_Login”的新java类名称

步骤2:在“Gmail_Login”中复制并粘贴以下代码

 import org.openqa.selenium.By;
  import org.openqa.selenium.WebDriver;
  import org.openqa.selenium.WebElement;
  import org.openqa.selenium.firefox.FirefoxDriver;
  public class Gmail_Login {
  /**
  * @param args
  */
  public static void main(String[] args) {
  // objects and variables instantiation
  WebDriver driver = new FirefoxDriver();
  String appUrl = "https://accounts.google.com";
  // launch the firefox browser and open the application url
  driver.get(appUrl);
  // maximize the browser window
  driver.manage().window().maximize();
  // declare and initialize the variable to store the expected title of the webpage.
  String expectedTitle = " Sign in - Google Accounts ";
  // fetch the title of the web page and save it into a string variable
  String actualTitle = driver.getTitle();
  // compare the expected title of the page with the actual title of the page and print the result
  if (expectedTitle.equals(actualTitle))
  {
  System.out.println("Verification Successful - The correct title is displayed on the web page.");
  }
  else
  {
  System.out.println("Verification Failed - An incorrect title is displayed on the web page.");
  }
  // enter a valid username in the email textbox
  WebElement username = driver.findElement(By.id("Email"));
  username.clear();
  username.sendKeys("TestSelenium");
  // enter a valid password in the password textbox
  WebElement password = driver.findElement(By.id("Passwd"));
  password.clear();
  password.sendKeys("password123");
  // click on the Sign in button
  WebElement SignInButton = driver.findElement(By.id("signIn"));
  SignInButton.click();
  // close the web browser
  driver.close();
  System.out.println("Test script executed successfully.");
  // terminate the program
  System.exit(0);
  }
  }

上面的代码的意思与前面的文本场景相同。


二、代码走查

导入语句:

import org.openqa.selenium.WebDriver;
  import org.openqa.selenium.firefox.FirefoxDriver;
  import org.openqa.selenium.WebElement;
  import org.openqa.selenium.By;

在编码前,我们需要导入上面的包:

import org.openqa.selenium.WebDriver:引用WebDriver的接口,该接口用于实例化一个新的Web 浏览器

import org.openqa.selenium.firefox.FirefoxDriver:引用FirefoxDriver类,该类在WebDriver的接口上实例化Firefox特定驱动程序

import org.openqa.selenium.WebElement:引用WebElement类,该类用于实例化一个新的web元素。

import org.openqa.selenium.By:引用By 类,用于调用定位符

有时我们需要引入其他几个包来实现更复杂、更独特的功能,如excel操作、数据库连接、日志记录、断言等


对象实例化

WebDriver driver = new FirefoxDriver();

创建一个引用变量WebDriver,并使用FirefoxDriver类实例化它。这个过程将启动一个默认的Firefox配置文件,而不加载任何扩展和插件。

启动Web浏览器

driver.get(appUrl);

在WebDriver实例上调用get()方法来启动新的web浏览器实例。Get()方法的字符串将web浏览器重定向应用程序的URL

浏览器窗口最大化

driver.manage().window().maximize();

maximize()方法是在浏览器窗口被重定向到应用程序URL后,将其最大化。

获取页面标题

driver.getTitle ();

获取当前网页的标题,可以将获取的标题加载到字符串变量中。

if (expectedTitle.equals(actualTitle))
  {
  System.out.println("Verification Successful - The correct title is displayed on the web page.");
  }
  else
  {
  System.out.println("Verification Failed - An incorrect title is displayed on the web page.");
  }

上面代码的意思是用java结构将期望的结果和实际的结果进行比较,根据比较的结果进行输出。

WebElement实例化

WebElement username = driver.findElement(By.id(“Email”));

在上面的语句中,我们通过调用“driver.findElement(By.id(“Email”))”,实例化了WebElement的引用。同时,用户名可以通过引用用户界面上的电子邮件文本框,实现对用户界面的一些操作

清除命令

username. Clear();

clear()方法/命令用于清除文本框中出现的值,包括清除默认值

sendKeys命令

username.sendKeys(“TestSelenium “);

sendKeys()方法/命令用于在文本框中输入/键入指定的值,上面的代码意思是在Gmail应用程序的电子邮件文本框中输入字符串“TestSelenium”, sendKeys是webdriver脚本中最常用的命令之一。

Click命令

SignInButton.click();

与sendKeys()类似,click()是另一个与web元素交互的命令。

单击()命令/方法用于单击web页面上的web元素。

上面的代码意思是在Gmail应用程序上单击“Sign in”按钮

注:

与sendKeys()方法不同,click()方法不能参数化。

为了支持单击web元素可能会加载一个新页面这种情况,click()方法是等待页面加载的编码方式。

关闭Web浏览器

driver.close();

close()用于关闭当前浏览器窗口。

终止Java程序

System.exit(0);

Exit()方法强制终止Java程序。记住在终止Java程序之前关闭所有浏览器实例。


三、测试执行

可以有下面3种方式来执行脚本:

1、在eclipse的菜单栏点击执行按钮运行测试脚本,参见下图

1111.png

2、在编辑器任意地方邮件点击,选择“Run As”选项,接下来选择“Java Application”

3、或者采用快捷键方式,按下Ctril+F11组合键

执行成功后,在面板上显示“Test script executed successfully”


四、定位Web元素

WebDriver中的Web元素定位和检查可以像在Selenium IDE的前面文章中介绍的那样,使用Selenium IDE和Firebug可以检查GUI上的web元素。强烈建议使用Selenium IDE来查找web元素。找到web元素后,复制并粘贴目标值到WebDriver代码中。

在WebDriver中,web元素是在动态查找器(findElement)的帮助下定位的(findElement(By.locatorType(“locator value”))).

比如:

driver.findElement(By.id(“Email”));

定位符类型及其语法

2222.png


五、总结

在本文中,我们使用WebDriver和Java开发了一个自动化脚本。我们还讨论了构成WebDriver脚本的各种组件。

重点内容

在编写脚本前,我们需要导入一些能够创建WebDriver脚本的包

importopenqa.selenium.By;
importopenqa.selenium.WebDriver;
importopenqa.selenium.WebElement;
importopenqa.selenium.firefox.FirefoxDriver;

· get()方法打开新的浏览器,get()方法的字符串将启动web浏览器并重定向到应用程序的URL

· maximize()方法使窗口最大化

· clear() 方法可清楚文本框里的任何内容

· sendKeys() 方法在文本框中输入指定的值

· Click()方法用于在web页面上点击web元素

· 在WebDriver中,可以使用动态查找器定位web元素


可用的定位器类型:

· id

· className

· name

· xpath

· cssSelector

· linkText

· partialLinkText

· tagName

 

版权声明:本文出自51Testing原创,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   尽管整体市场有所增长,但苹果公司 7 月份在美国的 iPhone 销量仍有所下降,但 iPhone 15 Pro 却成为该公司出货量的一个亮点。iPhone 是美国最受欢迎的智能手机品牌,而且在相当长的一段时间里一直如此。然而,7 月份的一份报告显示,苹果的智能手机阵容跌跌撞撞,而其他品牌则蓬勃发展。  根据 Counterpoint 的数据,美国智能手机市场整体销量同比增长了 5%。这主要是受三星和摩托罗拉增长的推动,而不是苹果。  相比之下,苹果的份额同比下降了 4%,Counterpoint 认为这是由于夏季升级率低造成的。这并不像听起来那么糟糕,因为这意味着两年来苹果的份额从 53...
            0 0 359
            分享
          • 一、测试常见问题和流程篇1、介绍一下测试流程(重点,常见!)需求评审、测试计划、测试用例、用例评审、冒烟测试、测试执行、验收测试、风险评估、上线\观察、问题跟进、测试报告、复盘会议;根据自己的日常经验来回答,每个点的工作内容都需要清晰掌握,有可能就某个点如何工作进行提问。2、介绍一下测试方法按阶段:单元测试、集成测试、系统测试、验收测试按手段:黑盒测试、白盒测试、灰盒测试其他:冒烟测试、回归测试3、介绍一下测试用例设计方法(用例设计方法&测试方法需分清楚)黑盒测试用例设计:等价类划分法、边界值分析法、错误推测法、因果图法、正交试验分析法、流程分析法白盒测试:语句覆盖、判定覆盖、条件覆盖...
            8 8 817
            分享
          •   软件测试工程师的前景怎么样?分享几个行业数据,用数据说话比较客观。(来源boss直聘)  从数据可以看出,目前从事软件测试行业的人中工作1~3年最多,工作3~5年后、工作5年以上的人很少。  测试这个行业还处于发展初期。因为如果后退10年,很少人知道软件测试是什么。直到今天,也有很多人不了解这个行业。  测试行业从业年龄一般在20至30岁之间,还比较年轻,年龄大的老测试,我佩服他们的学习能力。但是十年前的测试工具现在几乎都被新的框架所取代,如果不与时俱进地学习现在的新框架工具,就会面临被后浪淘汰的结果。软件测试行业平均收入  以北京为例,软件测试的平均工资现在是11366元/月,而我自己是...
            0 0 1404
            分享
          •   对于一个软件测试人员来说,编写测试用例是不可或缺的一项技能,但怎么写好一个需求的测试用例却不是很容易,特别对于新手来说,更是不容易,我也是从新手一步步走过来的,下面我就把我的经验总结出来供大家参考吧。  测试用例是什么  这个问题很简单但却不能不知道,刚入行,我们会很懵,弄清楚这个问题,对我们接下来写测试用例非常有帮助。  测试用例顾名思义就是用来测试的例子,但这个例子却不是随便的,而是通过我们分析后精心设计出来的,是我们测试的一个标准。  书写结构要符合规范  测试用例不仅是我们测试的例子,还是我们软件功能的一个详细描述,一个好的测试用例,不仅仅是自己能看得懂、测试场景全面,还要能让别人...
            14 14 2396
            分享
          •   假如你是一位测试主管,去评价一名测试工程师是否优秀,那么你将如何去判断呢?你最看重的是哪方面的能力呢?  对于这个问题,是不能一概而论的,要分为两种情况,情况不同,答案一定是不同的。  我先给你举个例子,听完这个例子之后,你就知道我为什么这样说了。  你去商场买一件东西,比如说手机,首先你会选择正规大商场去购买,然后会选择大品牌。  为什么这么说呢,因为你肯定知道,选购手机的时候,只能短暂的体验,想全方面了解,只能买到手里以后慢慢用才行。所以,手机的品牌、口碑、产品参数等等这些能看得到的数据就是重要的参考依据了。  但是,一旦买到手,成为了你的手机之后,你的想法立马会不同。你会希望它好用、...
            0 0 1051
            分享
      • 51testing软件测试圈微信