WebDriver 接口
从Selenium 的角度来看,What is the difference between ChromeDriver and WebDriver in selenium? interface 类似于第 3 方Browser Vendors 像 Mozilla 的协议、Chrome、Internet Explorer、Safari 等都必须遵守和实施相同的规则。这将反过来帮助最终用户使用公开的 API 编写通用代码并在所有可用浏览器中实现功能,而无需进行任何更改。
WebDriver 驱动程序 = 新的 FirefoxDriver();
通过代码行:
WebDriver driver = new FirefoxDriver();
我们正在创建一个 WebDriver 接口 的实例并将其转换 到 FirefoxDriver 类。所有的浏览器驱动像FirefoxDriver、ChromeDriver、InternetExplorerDriver、PhantomJSDriver、SafariDriver等都实现了WebDriver接口(实际上RemoteWebDriver类实现了WebDriver接口和浏览器驱动扩展RemoteWebDriver)。因此,如果我们使用WebDriver driver,那么我们可以将已经初始化的 driver 实例(作为公共对象变量)用于我们想要自动化的所有浏览器,例如Mozilla、Chrome、InternetExplorer、PhantomJS、Safari。
WebDriver driver = new FirefoxDriver();
driver = new ChromeDriver();
driver = new FirefoxDriver();
driver = new SafariDriver();
您可以在以下位置找到详细讨论:
WebElement 接口
从 Selenium 的角度来看,WebElement 代表一个 HTML 元素。一般情况下,所有与页面交互的操作都会通过这个接口进行。
WebElement 是一种抽象,用于在通过协议在远程和本地端之间传输Element nodes and are simply known as elements 时识别它。网页元素标识符是字符串常量,表示为:
"element-6066-11e4-a52e-4f735466cecf"
您可以在Values returned by webdrivers找到详细讨论
每个元素都有一个关联的 Web 元素引用,该引用在所有浏览上下文中唯一标识该元素。表示相同元素的每个元素的 Web 元素引用必须相同。它必须是一个字符串,并且应该是生成 UUID 的结果。
一个 ECMAScript Object 代表一个网络元素,如果它有一个网络元素标识符自己的属性。
每个浏览上下文都有一个相关的已知元素列表。当浏览上下文被丢弃时,已知元素列表也随之丢弃。
您可以在Why return type of findElement(By by) is WebElement?找到详细讨论
一些常用的关联方法如下:
clear()
click()
findElement(By by)
findElements(By by)
getAttribute(java.lang.String name)
getCssValue(java.lang.String propertyName)
getLocation()
getRect()
getSize()
getTagName()
getText()
isDisplayed()
isEnabled()
isSelected()
sendKeys(java.lang.CharSequence... keysToSend)
submit()