Java Selenium 2驱动程序findElement()
怎么可能呢Java Selenium 2驱动程序findElement(),java,webdriver,css-selectors,selenium-webdriver,Java,Webdriver,Css Selectors,Selenium Webdriver,怎么可能呢 driver.findElement(By.cssSelector("input[id*='supplierOps_input'][class*='ui-autocomplete-input']")); 引发此异常:org.openqa.selenium.NoSuchElementException:返回的节点不是HTML元素。 及 工作正常,他的.size()返回1(因此我只有1个元素),我可以使用.get(0).getAttribute(“id”)获取id值 我的大脑在挣扎
driver.findElement(By.cssSelector("input[id*='supplierOps_input'][class*='ui-autocomplete-input']"));
引发此异常:org.openqa.selenium.NoSuchElementException:返回的节点不是HTML元素。
及
工作正常,他的.size()
返回1(因此我只有1个元素),我可以使用.get(0).getAttribute(“id”)获取id值代码>
我的大脑在挣扎
更新:
这是POM.xml中的Selenium部分
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
<artifactId>servlet-api-2.5</artifactId>
</exclusion>
</exclusions>
</dependency>
org.seleniumhq.selenium
硒爪哇
测试
org.seleniumhq.selenium
硒服务器
测试
org.mortbay.jetty
servlet-api-2.5
好吧,我的大脑又痛了,因为在问了这个问题两天后,我试着做同样的事情,一个findElement(By.cssSelector())
和一个findElements(By.cssSelector())
现在都很好用了
我也尝试过xpath,效果也不错,比如:
driver.findElement(By.xpath("//input[contains(@id,'supplierOps_input') and contains(@class,'ui-autocomplete-input')]"))
这可能不是一个真正的答案,因为我找不到为什么我第一次尝试cssSelector时返回了一个抛出:org.openqa.selenium.NoSuchElementException:返回的节点不是HTML元素。
也许它是不稳定的,有时它会很酷,有时它会抛出..你使用哪个版本的Selenium?我的猜测是:因为你也在Css选择器中搜索class
——默认情况下,这样的类可以有多个元素,这就是findElement失败的原因。但这确实是一个猜测,您是否尝试将其转换为等效的XPath查询?我想知道它是否返回相同的东西。@skirsch事实上我发现我的pom.xml
@Arran中没有任何selenium的版本。我已经回答了我自己的问题。你是在同一个未更改的网站上运行它的吗?@skirsch是的,除了findElement()
driver.findElement(By.xpath("//input[contains(@id,'supplierOps_input') and contains(@class,'ui-autocomplete-input')]"))