WebDriver-W3C Candidate Recommendation明确提到了以下几点:
字符串对象使用用于其他原生 ECMAScript 对象的GetOwnProperty内部方法的变体。这种特殊的内部方法提供了对与 String 对象的各个字符相对应的命名属性的访问。
浏览器特定实现
我用你提供的所有信息做了一个小测试,Search Box
即Google Home Page
所有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
调用中发现一些不同之处,如下所示:
因此,Firefox 浏览器返回:
"value":{"element-6066-11e4-a52e-4f735466cecf":"6e35faa4-233f-400c-a6c7-6a66b54a69e5"}
因此,Chrome 浏览器返回:
"value": {"ELEMENT": "0.7086986861512812-1"}
对我们用户来说最重要的是浏览器对象返回的元素的值,它总是由用户引用并由webdriver
实例正确识别。所有这些内部逻辑都变成abstract
了最终用户。
更新 B
从@FlorentB 添加一些重要字节。的评论:
Selenium的早期版本,即Selenium v2.x使用关键字ELEMENT来存储DOM 树元素的引用。在Selenium的最新版本(即Selenium v3.x )中,此密钥已更改为element-6066-11e4-a52e-4f735466ce。当前ChromeDriver的大部分实现仍然来自Selenium 2.x规范。