Ren*_*aud 9 css-selectors selenium-webdriver
在这里第一次使用硒,我想知道为什么:
final WebElement justAnId = findElement(By.cssSelector("#someId"));
final WebElement whatIWant = justAnId.findElement(
By.cssSelector(".aClass.andAnother input[type=text]")
);
Run Code Online (Sandbox Code Playgroud)
有效,但不是:
final WebElement whatIWant = findElement(By.cssSelector(
"div#someId.aClass.andAnother input[type=text]"
));
Run Code Online (Sandbox Code Playgroud)
虽然他们似乎与我相当,但我得到:
org.openqa.selenium.NoSuchElementException: Unable to locate element:
{"method":"css selector","selector":"div#someId.aClass.andAnother input[type=text]"}
Run Code Online (Sandbox Code Playgroud)
这是预期的行为还是Selenium中的错误?我快速浏览了Selenium中的bug跟踪器,但我没有看到任何相关内容.在提出一个不需要的问题之前,我想问一下这里.另据我所知,它在IE6中不起作用但是谁在乎.我正在使用firefox进行此次运行.
小智 11
实际上两者是完全不同的选择者.
这是你的cssSelector:
div#someId.aClass.andAnother input[type=text]
Run Code Online (Sandbox Code Playgroud)
但你真正想写的是:
div#someId .aClass.andAnother input[type=text]
Run Code Online (Sandbox Code Playgroud)
注意ID和类之间的空格.你需要那个.
findElement()
在当前上下文中找到一个元素,这意味着您的第一段代码实际上是找到一个匹配的元素,该元素.aClass.andAnother input[type=text]
包含在其中#someId
.具有该ID的元素可能包含也可能不包含这两个类; WebDriver并不认为你指的是同一个元素; 它只是发现input
它的祖先是#someId
和.aClass.andAnother
.
这是完全不同于div#someId.aClass.andAnother input[type=text]
,其中发现的任何input[type=text]
内div#someId.aClass.andAnother
只(即它是一个div
包含两个 ID和类).
归档时间: |
|
查看次数: |
28699 次 |
最近记录: |