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')]"))