在官方W3c webdirver文档中,明确指出位置策略是:
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"
Run Code Online (Sandbox Code Playgroud)
但是,Selenium的电线协议允许:
class name
css selector
id
name
link text
partial link text
tag name
xpath
Run Code Online (Sandbox Code Playgroud)
在理论中,Selenium的文档已经过时,"真实"的故事在新的规范文档中.然而...
我在最新的Chrome自己的Webdriver上运行了一些测试,我可以确认这一点,name并且class name两者都有效; 但是,它们不符合规格.
我记得在Chromium问题上阅读他们只会实现官方的Webdriver规范.
现在:我知道通用答案,其中"规格并不总是100%遵循"等.但是,我想知道的是:
javascript selenium google-chrome chromium chrome-web-driver
假设您有一些带有 textarea 元素的 HTML,并且希望通过 Selenium(此处为 Java 绑定)获取其文本。
\n<textarea name="txtComment" id="txtComment" rows="2" cols="20">\n Some comment inside the textarea\n</textarea>\nRun Code Online (Sandbox Code Playgroud)\n 这就是我通过开发人员工具(Internet\xc2\xa0Explorer 和 Firefox)查看代码的方式,因此看起来它是一个普通的文本节点,而不是在元素的“value”属性内。
\n为什么getText() 不起作用:
\ndriver.findElement(By.id("txtComment")).getText();\nRun Code Online (Sandbox Code Playgroud)\n它只返回一个空 String。
\n但是使用getAttribute("value") 可以工作并返回预期的字符串:
\ndriver.findElement(By.id("txtComment")).getAttribute("value");\nRun Code Online (Sandbox Code Playgroud)\n这将按预期返回“文本区域内的一些评论”
\n这是相当令人惊讶的,因为 Selenium 文档中有关getText()的内容如下:
\n\n\n获取此元素的可见(即未被 CSS 隐藏)innerText,\n包括子元素,不带任何前导或尾随空格。
\n返回:\n该元素的内部文本。
\n
正如开头的 HTML 代码所示,元素的文本部分是可见的,它是“innerText”,不是吗?
\nselenium dom selenium-webdriver webdriverwait expected-condition