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();

#1楼 票数:2 已采纳

网络驱动程序接口

Selenium的角度来看, Selenium 中ChromeDriver 和 WebDriver什么区别? 界面类似于MozillaChromeInternet ExplorerSafari等第三方浏览器供应商必须遵守和实施的协议。 这反过来将帮助最终用户使用公开的 API 编写通用代码并在所有可用浏览器中实现功能,而无需任何更改。


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

通过这行代码:

WebDriver driver = new FirefoxDriver();

我们正在创建WebDriver 接口的实例并将其转换FirefoxDriver类。 所有浏览器驱动程序,FirefoxDriverChromeDriverInternetExplorerDriverPhantomJSDriverSafariDriver 等都实现了WebDriver接口(实际上RemoteWebDriver类实现了WebDriver 接口浏览器驱动程序扩展了RemoteWebDriver )。 因此,如果我们使用WebDriver driver ,那么我们可以将已经初始化的驱动程序实例(作为公共对象变量)用于我们想要自动化的所有浏览器,例如 Mozilla、Chrome、InternetExplorer、PhantomJS、Safari。

WebDriver driver = new FirefoxDriver();
driver = new ChromeDriver();
driver = new FirefoxDriver();
driver = new SafariDriver();

您可以在以下位置找到详细讨论:


网页元素界面

Selenium 的角度来看, WebElement代表一个 HTML 元素。 通常,与页面交互的所有操作都将通过该接口执行。

WebElement是用于标识Element 节点的抽象,当它通过协议在远程和本地端之间传输时简称为元素 Web 元素标识符是字符串常量,表示为:

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

您可以在Webdrivers 返回的值中找到详细讨论

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

如果 ECMAScript对象具有 Web 元素标识符自己的属性,则它表示一个 Web 元素。

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

您可以在为什么 findElement(By by) 的返回类型是 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()

#2楼 票数:0

WebDriver类侧重于广义上的浏览器驱动。 它加载页面,切换到不同的窗口/框架,获取页面标题等。不特定于页面元素的广泛操作。

WebElement专注于与您找到的特定元素进行交互。 像:

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

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

  ask by Manideep Latchupatula translate from so

未解决问题?本站智能推荐:

1回复

selenium 中的 ChromeDriver 和 WebDriver 有什么区别?

如果我们创建: chrome 驱动程序方法将被执行。 如果我们创建: 再次执行ChromeDriver方法[根据方法覆盖]。 那为什么我们只在执行时写后一个呢?
4回复

Selenium 中的 SearchContext 和 WebDriver 接口有什么区别或者它们之间有什么关系?

我见过我们可以同时使用的地方 要么 我很困惑这两个不同的接口有什么区别?
2回复

WebDriver和DevTool协议有什么区别

正如我们所知,WebDriver协议是为自动化测试目的而设计的。 但主流浏览器也提供DevTool协议。 在某些情况下,与WebDriver相比,DevTool协议可以实现更强大的交互和操作。 我的问题是为什么有两种不同的协议,这两种协议之间的主要区别是什么? 有没有可供选择的项目开
1回复

webdriver中显式等待和流畅等待有什么区别?

以下是我的代码 等待元素出现30秒,如果元素在30秒之前就绪,则执行下一个命令。 但是当我使用下面的代码进行流畅的等待时 它说No-such Element异常,它甚至不等待30秒,它会立即抛出异常。 有人可以告诉它有什么问题吗?
4回复

Selenium - @FindBy和WebElement.findElement()之间的区别

我正在使用Selenium来测试我的用户界面。 我正在尝试使用@ FindBy-Annotation。 以下代码可以正常工作: 我想使用下面的代码,因为它是基于注释的,但它不起作用,虽然我认为它完全相同: 我得到的是以下异常: 有些机构可以解释这种行为的原因,或者
2回复

Selenium IDE,Server,RC,2.0和WebDriver有什么区别?

Selenium似乎有很多不同的组件,网站也没有很好地解释它们,我仍然有点困惑哪个是哪个。 两者之间的区别或目的是什么: Selenium IDE Selenium Server Selenium远程控制WebDriver Selenium 2 我的理解如下: Seleniu
3回复

WebDriver.SwitchTo()。Window()和WebDriver.SwitchTo()。Frame()有什么区别

几天前,我需要在浏览器的2个标签之间切换WebDriver (在这种情况下为Chromedriver)(其中一个标签通过单击链接自动打开)。 我能够使用以下几行( C# )实现解决方案 但是,我最近遇到了一些使用框架和警报的实现,这使我感到困惑。 该文档对我不是很有帮助,因为
2回复

替代webdriver的ContextClick(webelement)?

我尝试使用webdriver的ContextClick函数打开Web应用程序的右键单击菜单,但是ContextClick强制浏览器的上下文菜单,而不是如果我们实际使用鼠标右键单击(右键单击会出现的菜单)将打开特定于Webapp的上下文菜单) ContextClick是否有硒的替代品?