在官方的W3C webdriver文档中,明确指出位置策略是:
State Keyword
-----------------------------------------------
CSS selector "css selector"
Link text selector "link text"
Partial link text selector "partial link text"
Tag name "tag name"
XPath selector "xpath"
字符串
但是,Selenium's wire protocol允许:
class name
css selector
id
name
link text
partial link text
tag name
xpath
型
在理论上,Selenium的文档已经过时了,“真实的”故事在新的规范文档中。然而.
我在最新的Chrome自己的Webdriver上运行了一些测试,我可以确认name
和class name
都可以工作;但是,它们不在规范中。
我记得阅读关于Chromium的问题,他们只会实现官方的Webdriver规范。
现在:我 * 知道 * 一般的答案,其中“规格并不总是遵循100%",等等。但是,我想知道:
- 你能在Chromium中找到实现这一点的代码吗?(最欢迎提供链接)
- 在Chromium邮件列表中有关于这些的讨论吗?
- 那些“非官方”的命令(记录在“旧的”Selenium规范文件中)可能会保留下来吗?证据在哪里?
1条答案
按热度按时间4xrmg8kj1#
是的,你没看错。
根据当前的 *WebDriver - W3C候选建议 , WebDriver策略 * 如下:
快照:
x1c 0d1x的数据
然而,JsonWireProtocol 曾经被用来支持下面列出的 * JsonStrategies *,但目前文档明确指出其 Status 为 obsolete:
快照:
的
更改通过相应的 * 客户端 * 特定绑定传播。对于 Selenium-Java 客户端,这里是我们为用户提供switch案例的客户端代码:
字符串
快照:
现在,你的问题一定是为什么在 *W3C规范 * 和 * 客户端 * 中发生了这种变化。根据#1042,来自 *WebDriver贡献者 * 的 * 答案 * 非常直接:
这使规范保持简单,因为这些可以使用CSS选择器来实现,该选择器Map到querySelector/querySelectorAll。