selenium:使用cssSelector看不到元素,而使用xpath可见

我试过java代码:

driver.findElement(By.cssSelector("input.only-numbers.ltr")).sendKeys("111"); 

我收到一个错误:

线程“main”中的exceptionorg.openqa.selenium.ElementNotVisibleException:元素不可见

但当我将代码更改为xpath时,这项工作就完美了

 driver.findElement(By.xpath("html/body/section[10]/div/div[2]/form/div[1]/input")).sendKeys("111"); 

HTML代码:

  

为什么会发生这种情况?如何使用cssSelector修复?

看起来你使用cssSelector有多个元素,不幸的是你找到了隐藏元素,需要validation你的cssSelector它是唯一的并找到正确的元素。

尝试如下,可能有帮助: –

 driver.findElement(By.cssSelector("form#form-resetpass input[name = 'wupid']")).sendKeys("111"); 

或者尝试使用WebDriverWait等到这个元素变得可见,如下所示: –

 new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("form#form-resetpass input[name = 'wupid']"))).sendKeys("111"); 

如果您仍然无法与元素进行交互,请尝试使用JavascriptExecutor ,如下所示: –

 ((JavascriptExecutor)driver).executeScript("arguments[0].value = arguments[1]", driver.findElement(By.cssSelector("form#form-resetpass input[name = 'wupid']")), "111")