当前位置: 首页 > 知识库问答 >
问题:

远程web驱动程序在web驱动程序接口和chrome驱动程序类之间的目的是什么

易品
2023-03-14

搜索上下文是selenium中最超级的接口,它由另一个称为网络驱动程序的接口扩展。

-所有搜索上下文和Web驱动程序接口的抽象方法都在远程WebDriver类中实现。

-所有与浏览器相关的类,如Firefox驱动程序、Chrome驱动程序等,都扩展了远程Webdriver类。

根据上面的stmt,远程web驱动程序类如何为搜索上下文接口和web驱动程序接口中定义的所有抽象方法给出定义。因为功能驱动程序的具体浏览器的实现细节不同。获取/驱动程序。这样的标题

为什么chromedriver或firefoxdriver类不能直接扩展webdriver接口。为什么remotedriver类保持在webdriver接口和chromedriver/firefoxdriver/iedriver类之间

共有1个答案

卢俭
2023-03-14

虽然每个浏览器在驱动程序级别的实现可能不同(chromedriver.exegeckodriver.exeIEDriverServer.exe,等等),但语言绑定执行命令的机制对于所有浏览器都是相同的。因此,虽然每个特定于浏览器的驱动程序类都可以直接实现接口,但每个驱动程序类中的代码都是相同的。使用RemoteWebDriver作为基类可以消除重复的代码。此外,RemoteWebDriver类还有一个额外的好处,即可以对运行在与执行语言绑定代码的机器不同的(远程)机器上的浏览器执行WebDriver命令。

此外,SearchContext接口定义了两个方法,findElement和findElements。WebDriver接口不是唯一扩展它的接口;WebElement接口也是。查找已定位元素的元素子元素是完全有效的。考虑以下示例超文本标记语言片段:

<div class="foo">
  I don’t want to select this div.
</div>
<div class="bar">
  I need to do something with this div.
  <div class="foo">
    But I also do need to select this div
  </div>
</div>

使用driver.find元素(By.css选择器(div.foo))会给我错误的元素,

// Assume driver is a valid WebDriver instance
WebElement parent = driver.findElement(By.cssSelector("div.bar");

// Since WebElement also extends SearchContext,
// we can do this, which limits the scope of the
// find to only children of the parent element
WebElement child = parent.findElement(By.cssSelector("div.foo");

现在我可以操纵我想要的确切元素。

 类似资料:
  • 我试图通过网络驱动程序在“http://www.kayak.co.in/?ispredir=true”中选择入住和退房时间。无法选择任何日期。请帮帮我。

  • 这是我在运行上述程序时遇到的错误。有人解决了这个问题吗? 我尝试过改变Selenium和ChromeDriver的版本,但没有任何效果。

  • 我假设Selenium打开的chrome浏览会话将与google chrome本地安装相同。但是当我尝试在这个网站上搜索时,即使只是用selenium打开它并手动控制搜索过程,我会得到一个错误信息,当我使用常规chrome与我自己的个人资料或在incognito窗口中搜索结果返回良好。每当我搜索这个问题,我发现结果指出鼠标移动或点击模式提供它。但情况并非如此,因为我在打开浏览器后尝试手动控制。ht

  • 我试图在远程节点上运行selenium网格代码,但它总是引发异常。 集线器: 它会听192.168.1.106:4444 节点: 它将在192.168.1.132:5566收听 Java代码: 节点日志: 操作系统:Fedora 23,Firefox版本50.1.0,selenium独立服务器3.0.1

  • 为什么命令不会显示在我的上?每次我在test中输入Selenium Web驱动程序命令时,它与其他使用- 驱动程序的下拉列表。没有出现,只显示它是一个班...有什么建议吗?

  • 我是SeleniumWebDriver的新手。我写这段代码是为了理解导航命令,但是一旦浏览器打开,就会显示一个登录弹出窗口。我试图使用类名或xpath关闭它,但出现超时异常。 在这种情况下,我需要使用显式等待吗?你能帮我找出问题所在吗? } 例外情况: [43.366][SEVERE]:超时接收来自渲染器的消息: 37.150[43.373][SEVERE]:超时接收来自渲染器的消息:-0.007