Webdriver 的官方定位器策略
- 2024-11-02 21:00:00
- admin 原创
- 52
问题描述:
在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 的线路协议允许:
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:
是的,你没看错。
根据当前的WebDriver - W3C 候选建议,列出的定位器策略如下:
“css 选择器”:CSS 选择器
“链接文本”:链接文本选择器
“部分链接文本”:部分链接文本选择器
“标签名称”:标签名称
“xpath”:XPath 选择器
快照:
然而,JsonWireProtocol曾经用于支持下面列出的定位器策略,但目前文档明确指出其状态已过时:
类名:返回类名包含搜索值的元素;不允许使用复合类名。
css 选择器:返回与 CSS 选择器匹配的元素。
id:返回 ID 属性与搜索值匹配的元素。
name:返回 NAME 属性与搜索值匹配的元素。
链接文本:返回可见文本与搜索值匹配的锚元素。
部分链接文本:返回可见文本与搜索值部分匹配的锚元素。
标签名称:返回标签名称与搜索值匹配的元素。
xpath:返回与 XPath 表达式匹配的元素。提供的 XPath 表达式必须“按原样”应用于服务器;如果表达式与元素根无关,则服务器不应修改它。因此,XPath 查询可能会返回根元素子树中不包含的元素。
快照:
更改通过各个客户端特定的绑定进行传播。对于Selenium-Java客户端,以下是客户端代码,其中我们为用户提供了 switch case:
switch (using) {
case "class name":
toReturn.put("using", "css selector");
toReturn.put("value", "." + cssEscape(value));
break;
case "id":
toReturn.put("using", "css selector");
toReturn.put("value", "#" + cssEscape(value));
break;
case "link text":
// Do nothing
break;
case "name":
toReturn.put("using", "css selector");
toReturn.put("value", "*[name='" + value + "']");
break;
case "partial link text":
// Do nothing
break;
case "tag name":
toReturn.put("using", "css selector");
toReturn.put("value", cssEscape(value));
break;
case "xpath":
// Do nothing
break;
}
return toReturn;
运行代码片段Hide results展开片段
快照:
现在,你的问题一定是为什么W3C 规范和客户端会发生这种变化。根据#1042,WebDriver 贡献者的答案非常直接:
这使得规范保持简单,因为这些可以使用 CSS 选择器来实现,它映射到 querySelector/querySelectorAll。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件