Selenium WebDriver驱动程序完全指南:从入门到精通

这是文章《Selenium WebDriver = Selenium驱动程序》的第1部分(共1部分)。

我们需要浏览器来测试Web应用程序。Selenium自动化浏览器并可以帮助我们在不同浏览器上自动化Web应用程序测试。Selenium API提供了许多类和接口,用于处理不同类型的浏览器和HTML元素。

什么是Selenium WebDriver接口?

Selenium WebDriver是一个定义了一组方法的接口。然而,具体的实现由特定浏览器的类提供。其中一些实现类包括AndroidDriver、ChromeDriver、FirefoxDriver、InternetExplorerDriver、IPhoneDriver、SafariDriver等。WebDriver的主要功能是控制浏览器。它甚至帮助我们选择HTML页面元素并对其执行操作,例如点击、填写表单字段等。

Selenium WebDriver

如果我们想在Firefox浏览器中执行测试用例,我们必须使用FirefoxDriver类。同样地,如果我们想在Chrome浏览器中执行测试用例,我们必须使用ChromeDriver类。

Selenium WebDriver方法详解

SearchContext是Selenium API中最高级的接口,它有两个方法 – findElement()和findElements()。Selenium WebDriver接口有许多抽象方法,如get(String url)、quit()、close()、getWindowHandle()、getWindowHandles()、getTitle()等。WebDriver还有嵌套接口,如Window、Navigation、Timeouts等。这些嵌套接口用于执行back()、forward()等操作。

方法 描述
get(String url) 这个方法将启动一个新浏览器并在浏览器实例中打开给定的URL。
getWindowHandle() 它用于处理单个窗口,即主窗口。它的返回类型是字符串。它将返回来自焦点浏览器的浏览器窗口句柄。
getWindowHandles() 它用于处理多个窗口。它的返回类型是Set。它将返回由Selenium WebDriver打开的所有浏览器的所有句柄。
close() 此命令用于关闭当前处于焦点的浏览器窗口。
quit() 此方法将关闭所有当前打开的浏览器窗口并终止WebDriver会话。
getTitle() 此方法用于检索用户当前正在处理的网页标题。

实现WebDriver接口的类列表

WebDriver接口的主要实现类包括ChromeDriver、EdgeDriver、FirefoxDriver、InternetExplorerDriver等。每个驱动器类对应一个浏览器。我们只需创建驱动器类的对象并与其一起使用即可。

描述
ChromeDriver 它帮助您在Chrome浏览器上执行Selenium脚本。
FirefoxDriver 它帮助您在Firefox浏览器上执行Selenium脚本。
InternetExplorerDriver 它帮助您在Internet Explorer浏览器上执行Selenium脚本。

WebElement命令列表

Selenium的WebElement代表一个HTML元素。我们可以使用findElement()方法获得WebElement的实例,然后执行特定的操作,比如点击、提交等。一些常用的WebElement方法包括:

命令 描述 语法
findElement() 此方法通过使用给定的定位器在当前网页中查找第一个元素。 WebElement element = driverObject.findElement(By.locator(“value”));
sendKeys() 此方法向编辑框或文本框中输入一个值。 driver.findElement(By.elementLocator(“value”)).sendkeys(“value”);
clear() 它清除编辑框或文本框中的值。 driverObject.findElement(By.locatorname(“value”)).clear();
click() 它点击一个元素(按钮、链接、复选框)等。 driverObject.findElement(By.ElementLocator(“LocatorValue”)).click();

Selenium WebDriver 示例 – 打印网站标题

让我们来看一个使用Selenium WebDriver调用Firefox浏览器并打印网站标题的简单示例。

package com.Olivia.selenium.firefox;

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

public class GeckoDriverExample {

	public static void main(String[] args) {
		//specify the location of GeckoDriver for Firefox browser automation
		System.setProperty("webdriver.gecko.driver", "geckodriver");
		WebDriver driver = new FirefoxDriver();
		driver.get("https://scdev.com");
		String PageTitle = driver.getTitle();
		System.out.println("Page Title is:" + PageTitle);
		driver.close();
	}
}

输出:

1551941763563	mozrunner::runner	INFO	Running command: "/Applications/Firefox.app/Contents/MacOS/firefox-bin" "-marionette" "-foreground" "-no-remote" "-profile" "/var/folders/1t/sx2jbcl534z88byy78_36ykr0000gn/T/rust_mozprofile.t6ZyMHsrf2bh"
1551941764296	addons.webextension.screenshots@mozilla.org	WARN	Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid host permission: resource://pdf.js/
1551941764297	addons.webextension.screenshots@mozilla.org	WARN	Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid host permission: about:reader*
Can't find symbol 'GetGraphicsResetStatus'.
1551941765794	Marionette	INFO	Listening on port 61417
1551941765818	Marionette	WARN	TLS certificate errors will be ignored for this session
Mar 07, 2019 12:26:05 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
Page Title is:JournalDev - Java, Java EE, Android, Python, Web Development Tutorials
1551941814652	Marionette	INFO	Stopped listening on port 61417
Selenium WebDriver Example

你可以从我们的GitHub存储库中查看更多的Selenium示例。

参考:WebDriver GitHub 代码

bannerAds