当前位置: 首页 > 面试题库 >

Webdrivers返回的值

柴阳云
2023-03-14
问题内容

使用进行搜索后POST /session/{session id}/element,我可以从Chrome网络驱动程序获得以下信息:

{ sessionId: '3241e7da289f4feb19c1f55dfc87024b',
  status: 0,
  value: { ELEMENT: '0.12239552668870868-1' } }

这是规格要求吗?

我之所以问是因为我找不到在任何地方都用大写字母清楚地表示“ ELEMENT”的地方。我在规范中只能找到一个名为的键value(它是:它设置为{ ELEMENT: '0.12239552668870868-1' }

  • 我是否总能一直期待其他浏览器的网络驱动程序会做出这种响应?也就是说,是statussessionId总是返回?

  • 这就是{ ELEMENT: '0.12239552668870868-1' }铬构成物体的方式吗?还是对任何Webdriver来说都是如此?当然,其他Webdriver还会返回什么?


问题答案:

该webdriver的-W3C候选推荐标准明确提到了以下几点:

  • “查找元素”命令用于在当前浏览上下文中查找可用于将来命令的元素。
  • 让定位策略成为获得名为“ using”的属性的结果。
  • 让选择器成为获得名为“值”的属性的结果。
  • 获得带有参数名称的属性的结果被定义为与调用Object的结果相同。GetOwnProperty(propertyName)
  • GetOwnProperty(propertyName)在ECMAScript®语言规范定义为:

字符串对象使用用于其他本机ECMAScript对象的GetOwnProperty内部方法的变体。这种特殊的内部方法提供对与String对象的各个字符相对应的命名属性的访问。

  • 所以调用GetOwnProperty是用于其他原生的ECMAScript对象的内部方法的内部范围内得到解决Browser DriversBrowser Clients
  • Mozilla有充分的文档证明Object.getOwnPropertyNames()和getOwnPropertyDescriptors()。

浏览器特定的实现

我对您提供的所有信息Search BoxGoogle Home Pagehttps://www.google.co.in与的所有主要变体)进行了小型测试,WebDrivers结果如下:

  • ChromeDriver - OSS
        [[ChromeDriver: chrome on XP (0d24fd038bde751b1e411711271c3e69)] -> name: q]
    [[ChromeDriver: chrome on XP (0d24fd038bde751b1e411711271c3e69)] -> name: q]
  • FirefoxDriver - W3C
        [[FirefoxDriver: firefox on XP (e7a56813-97c5-466e-9c35-24c9f89af6ed)] -> name: q]
    [[FirefoxDriver: firefox on XP (e7a56813-97c5-466e-9c35-24c9f89af6ed)] -> name: q]
  • InternetExplorerDriver - W3C
        [[InternetExplorerDriver: internet explorer on WINDOWS (367257db-cdbc-4be7-aeac-805a21ad9d2d)] -> name: q]
    [[InternetExplorerDriver: internet explorer on WINDOWS (367257db-cdbc-4be7-aeac-805a21ad9d2d)] -> name: q]

因此,您可以从该字段中观察到,返回的相关 字段的详细信息采用类似的模式,直到 WebDriver 变体将正确的引用传递给用户,它才不会成为障碍。

最后,值得一提的是,与 FirefoxDriverInternetExplorerDriver (均符合W3C)一样,
ChromeDriver 几乎 符合W3C, 并且可能在某些功能方面有所不同。

更新A

根据您的问题和更新,您对 ChromeDriverChrome
通信协议非常正确。更加细化,我们可以在webdriver调用中找到一些区别,如下所示:

  • 火狐:
        1516626575533   webdriver::server   DEBUG   <- 200 OK {"value":{"element-6066-11e4-a52e-4f735466cecf":"6e35faa4-233f-400c-a6c7-6a66b54a69e5"}}

因此,Firefox浏览器返回:

"value":{"element-6066-11e4-a52e-4f735466cecf":"6e35faa4-233f-400c-a6c7-6a66b54a69e5"}
  • 谷歌
                [14.921][DEBUG]: DEVTOOLS RESPONSE Runtime.evaluate (id=25) {
       "result": {
          "type": "object",
          "value": {
             "status": 0,
             "value": {
                "ELEMENT": "0.7086986861512812-1"
             }
          }
       }
    }

因此,Chrome浏览器返回:

"value": {"ELEMENT": "0.7086986861512812-1"}

对我们用户而言最重要的是浏览器对象返回的元素的值,该值始终由用户引用并由webdriver实例正确标识。所有这些内在逻辑都变成abstract了最终用户。

更新B

从@FlorentB添加一些有效字节。的评论:

Selenium的早期版本(即 Selenium v​​2.x)_使用关键字ELEMENT来存储DOM Tree元素的引用。该密钥已在_Selenium 的最新版本(即 Selenium v​​3.x)中更改_为element-6066-11e4-a52e-4f735466ce。当前 _ChromeDriver的 大多数实现仍来自 Selenium 2.x 规范。



 类似资料:
  • 所以我正在c#winform中使用硒火狐web驱动程序,我在下面有这段代码来获取弹出窗口的句柄,当您单击“webtraffic_popup_start_button”时显示,它应该获得弹出窗口的句柄,但弹出句柄与当前句柄相同。 任何帮助将不胜感激 这就是弹出式菜单的样子。

  • 问题内容: 我正在使用Postgresql 8.3,并具有以下简单功能,该功能会将a返回 给客户端 现在,我可以使用以下SQL命令来调用此函数并操纵返回的游标,但是游标名称是由PostgreSQL自动生成的 此外,如38.7.3.5中所述,显式地将游标名称声明为函数的输入参数 。返回游标。我可以声明自己的游标名称并使用此游标名称来操纵返回的游标,而不是为我自动生成的Postgresql吗?如果不是

  • 问题内容: 我在使用Ajax时遇到问题。 问题是,在获得ajax响应之前,它会返回cnt。因此它总是返回NULL。 有没有办法使正确的返回响应值? 谢谢! 问题答案: 由于AJAX请求是异步的,因此您的cnt变量将在请求返回并调用成功处理程序之前返回。 我建议重构您的代码以解决此问题。 一种方法是从AJAX请求的成功处理程序中调用调用了GetGrantAmazonItemCnt()的任何函数,此方

  • 问题内容: 例如我有一个功能: 我怎样才能返回AJAX后得到的? 问题答案: 因为请求是异步的,所以您无法返回ajax请求的结果(而同步ajax请求是一个 糟糕的 主意)。 最好的选择是将自己的回调传递给f1 然后,您将像这样致电:

  • 问题内容: 我有一类这样的方法: 我如何在另一个类中调用此方法? 问题答案: 1. 如果要从中调用该方法的类位于同一包中,则创建该类的实例并调用该方法。 2. 使用 3. 最好有个赞等等。 例如:

  • 我正在等待(从USSD请求中)检索一个值,以便返回它(getUSSD):