Selenium WebDriver——重要功能回顾
Selenium自动化工具已经问世十多年了,它可以自动化我们的测试需求。作为一个免费且拥有强大社区支持的工具,它拥有许多功能,使我们的自动化测试更加可靠和便捷。鉴于Selenium WebDriver日益增长的普及率,让我们回顾一下它的一些重要功能,这些功能证明了为什么Selenium WebDriver仍然在众多工具中脱颖而出。
关键功能——Selenium WebDriver
兼容多种Web浏览器
Selenium WebDriver支持市面上各种各样的Web浏览器,例如Firefox、Chrome、Internet Explorer、Opera、Safari等等。与其他工具不同,Selenium WebDriver与网页及其元素的交互方式就像真实用户一样。它利用浏览器的原生支持进行直接调用,无需借助任何中间件。
最好的部分是,我们可以通过简单的命令启动浏览器。例如,要启动Firefox、Chrome和Internet Explorer浏览器,可以使用以下命令:
WebDriver driver = new FirefoxDriver(); WebDriver driver = new ChromeDriver(); WebDriver driver = new InternetExplorerDriver();
还有其他驱动程序,例如AndroidDriver、HtmlUnitDriver和IPhoneDriver,可以在需要时使用。对于移动应用程序测试,AndroidDriver和IPhoneDriver分别用于测试Android和IOS应用程序。
支持多种编程语言
Selenium WebDriver让我们可以自由选择许多常用的编程语言,例如Java、C#、PHP、Ruby、Perl和Python。因此,我们可以根据需要选择任何支持的编程语言,并相应地创建测试脚本。
它还使我们能够在需要时使用条件语句、决策语句、switch case语句、循环和分支语句来编写脚本,使我们的测试脚本更强大,能够处理所有情况。
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
简单的命令来暂停连续步骤
在执行自动化脚本时,经常会因为第二个条件在第一个条件执行完成之前就开始执行而导致错误,从而无法获得预期的结果。
为了处理这些情况,Selenium WebDriver有两个基本的等待函数。
隐式等待——这是我们可以在整个测试脚本中每个连续步骤之间提供的默认等待时间。例如,如果默认时间为20秒,则系统将在移动到下一步之前等待20秒来执行第一步。
隐式等待的示例命令如下:
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
显式等待——这是用于停止执行进度,直到满足特定条件为止,系统将等待显式给定的时间段以允许条件执行。
显式等待的示例命令如下:
WebDriverWait wait = new WebDriverWait(driver, 20); wait.until(ExpectedConditions.elementToBeClickable (By.cssSelector(“#submitButton”)));
您还可以使用java.lang.Thread.sleep(milliseconds)方法在执行脚本时的任何时候暂停测试执行特定时间。
例如:
Thread.sleep(20000); //To pause for 20 seconds
提供简单的网页导航方法
WebDriver中有一些有用的命令可用于网页导航。让我们讨论这些有用的命令。
- driver.navigate().to() 方法 // 打开特定URL。
例如:driver.navigate().to(“https://tutorialspoint.com/ ”);
- driver.navigate().forward() 方法 // 在浏览器的历史记录中向前导航一页
- driver.navigate().back() 方法 // 返回到浏览器历史记录中的上一页
- driver.navigate().refresh() 方法 // 刷新当前页面
还有一个Get()命令可以打开一个新的浏览器窗口。
例如:
driver.get(“https://tutorialspoint.com/ “);
如上所述,driver.navigate.to()和driver.get()命令用于打开URL或网页的相同目的,但它们之间的唯一区别是,get()命令将等待页面完全加载,而navigate()命令则不会关心页面是否完全加载。
轻松识别和使用Web元素
Selenium WebDriver具有不同类型的定位器,可以清晰地定位网页中的Web元素。借助这些定位器,我们可以在自动化脚本中准确地使用这些元素。
定位器如下:
- 名称
- 类名
- ID
- 标签名
- 链接文本
- 部分链接文本
- XPath
- CSS选择器
- DOM
更好地处理动态Web元素
在我们自动化应用程序时经常遇到的一个常见问题是处理动态元素。对于静态元素,很容易使用唯一的定位器(如名称、ID、类名等)来识别这些元素,但是当元素的ID或XPath在每次页面重新加载时都会发生变化时,处理它们就非常困难了。
让我们讨论一些处理动态元素的可能方法。
绝对XPath——我们经常使用绝对XPath来处理动态元素。它是从根节点开始的元素的完整路径,使用单个正斜杠(/)。
contains()——contains()函数可以用于处理被静态值包围的动态元素。它能够查找包含部分文本的元素。
starts-with()——它查找并匹配提供的属性的起始文本与动态元素的属性,因此当页面重新加载时值发生变化时,它能够找到该元素。
Selenium 3.0——变化及对Selenium WebDriver的影响
经过漫长的等待,Selenium 3.0终于发布了。上一个版本Selenium 2.0是在大约5年前发布的,从那时起,为了满足我们的需求,发生了许多变化。
根据官方发行说明,Selenium 3.0对Selenium RC API进行了一些重大更改,因为他们删除了原始的Selenium Core实现,并将其替换为由WebDriver支持的实现。他们还通过添加命令行参数选项更新了Json配置文件格式;因此,Selenium Grid用户可能需要更新他们的设置和配置。
但是对于WebDriver,没有什么变化。您可以简单地更新到Selenium 3.0,而无需担心任何代码或配置更改。我们目前正在使用的功能将仍然存在。对主要Web浏览器(如Firefox、Chrome、Internet Explorer和Safari)的WebDriver进行了一些改进,以获得更好的测试体验。