Selenium中的WebDriver和WebElement有什么区别?

时间:2018-10-12 15:28:34

标签: selenium selenium-webdriver webdriver

Selenium中的WebDriver和WebElement有什么区别?

示例代码:

WebDriver driver = new FirefoxDriver();      
driver.get("http://www.google.com");      
WebElement s  = driver.findElement(By.name("q"));      
s.sendKeys("Packt Publishing");      
s.submit();

2 个答案:

答案 0 :(得分:1)

WebDriver界面

Selenium 角度来看, WebDriver接口类似于第三方浏览器供应商之类的协议,例如 Mozilla Chrome Internet Explorer Safari 等必须遵循并实现相同的功能。反过来,这将帮助最终用户使用公开的API编写通用代码并在所有可用的Browsers上实现功能,而无需进行任何更改。


WebDriver驱动程序=新的FirefoxDriver();

通过WebDriver driver = new FirefoxDriver();,我们将创建 WebDriver 接口的实例,并广播 FirefoxDriver类。 {em> FirefoxDriverChromeDriverInternetExplorerDriverPhantomJSDriverSafariDriver等所有浏览器驱动程序均实现了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界面

的角度来看,WebElement代表HTML元素。通常,与页面交互有关的所有操作都将通过此界面执行。

WebElement 是一种抽象,用于标识通过协议在远程端和本地端之间传输的Element nodes and are simply known as elements。 Web元素标识符是字符串常量,表示为:

"element-6066-11e4-a52e-4f735466cecf"

您可以在Values returned by webdrivers

中找到详细的讨论

每个元素都有一个关联的Web元素引用,该引用在所有浏览上下文中唯一标识该元素。表示同一元素的每个元素的Web元素引用必须相同。它必须是一个字符串,并且应该是生成UUID的结果。

如果ECMAScript Object具有Web元素标识符自身的属性,则表示Web元素。

每个浏览上下文都有一个关联的已知元素列表。丢弃浏览上下文时,已知元素的列表也会随之丢弃。

您可以在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()

答案 1 :(得分:0)

WebDriver 类专注于以广泛的方式驱动浏览器。它会加载页面,切换到不同的窗口/框架,获取页面标题等。不是特定于页面元素的广泛操作。

WebElement 专注于与您找到的 specific 元素进行交互。像这样的东西:

  • 点击该特定元素
  • 从该特定元素中检索文本和其他值
  • 找出特定元素的位置
  • 将文本发送到该特定元素(例如填充输入字段)

WebDriver和WebElement之间唯一真正的重叠是findElement和findElements方法。对于 Webdriver ,这些方法可在页面上的任意位置找到给定的“按”。对于 WebElement ,这些方法将给定的By定位在该元素的上下文中(通常在其内部)。