该webdriver的-W3C候选推荐标准明确提到了以下几点:
- “查找元素”命令用于在当前浏览上下文中查找可用于将来命令的元素。
- 让定位策略成为获得名为“ using”的属性的结果。
- 让选择器成为获得名为“值”的属性的结果。
- 获得带有参数名称的属性的结果被定义为与调用Object的结果相同。
GetOwnProperty(propertyName)
。 GetOwnProperty(propertyName)
在ECMAscript®语言规范定义为:
字符串对象使用用于其他本机ECMAscript对象的GetOwnProperty内部方法的变体。这种特殊的内部方法提供对与String对象的各个字符相对应的命名属性的访问。
- 所以调用GetOwnProperty是用于其他原生的ECMAscript对象的内部方法的内部范围内得到解决
Browser Drivers
和Browser Clients
。 - Mozilla有充分的文档证明Object.getOwnPropertyNames()和getOwnPropertyDescriptors()。
浏览器特定的实现
我对您提供的所有信息
Search Box(
Google HomePage即
https://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 变体将正确的引用传递给用户,它才不会成为障碍。
最后,值得一提的是,与 FirefoxDriver 和 InternetExplorerDriver (均符合W3C)一样,
ChromeDriver 几乎 符合W3C, 并且可能在某些功能方面有所不同。
更新A
根据您的问题和更新,您对 ChromeDriver 和 Chrome
通信协议非常正确。更加细化,我们可以在
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 v2.x)_使用关键字ELEMENT来存储DOM Tree元素的引用。该密钥已在_Selenium 的最新版本(即 Selenium v3.x)中更改_为element-6066-11e4-a52e-4f735466ce。当前 _ChromeDriver的 大多数实现仍来自 Selenium 2.x 规范。



