Java Selenium-click不会触发任何操作,也不会引发异常

Java Selenium-click不会触发任何操作,也不会引发异常,java,selenium,Java,Selenium,我正在使用Selenium Webdriver和java,我需要单击以下元素: 代码如下: driver.get(urlHp); WebDriverWait wait = new WebDriverWait(driver, 10); By btn = By.cssSelector("#_content-it_it_jcr_content_home-par1_promo_-par_o > div > li> a> div.btn-wrapper > button".t

我正在使用Selenium Webdriver和java,我需要单击以下元素:

代码如下:

driver.get(urlHp);
WebDriverWait wait = new WebDriverWait(driver, 10);
By btn = By.cssSelector("#_content-it_it_jcr_content_home-par1_promo_-par_o > div > li> a> div.btn-wrapper > button".trim());
wait.until(ExpectedConditions.visibilityOfElementLocated(btn));

driver.findElement(btn).click();
我可以获取元素,并且不会抛出任何异常,但是单击不起作用

请注意,元素位于视口下方


如何修复它?

可能您可以尝试使用下面给出的Actions类

driver.get(urlHp);
WebDriverWait wait = new WebDriverWait(driver, 10);
By btn = By.cssSelector("#_content-it_it_jcr_content_home-par1_promo_-par_o > div > li> a> div.btn-wrapper > button".trim());
wait.until(ExpectedConditions.visibilityOfElementLocated(btn));
Actions actions = new Actions(driver);
WebElement btnElement=driver.FindElement(btn);
actions.MoveToElement(btnElement).Click(btnElement).Perform();

尝试Javascript执行器:

JavascriptExecutor js=(JavascriptExecutor) driver;
js.executeScript("arguments[0].click()", driver.findElement(btn));

Selenium只能单击可见元素。我的意思是,它应该像用户使用你的应用一样工作。 Ranjith向你展示的是:

JavascriptExecutor js=(JavascriptExecutor) driver;
js.executeScript("arguments[0].click()", driver.findElement(btn));
这是用实际的javascript代码单击按钮。对于快速修复,这很好。但是请记住,如果元素的大小是1px乘1px,那么这个实现也会单击该元素。测试将通过,但您的应用程序不可用。 我建议selenium使用scrollIntoView方法


通过这种方式,您更接近实际用户流。

谢谢,但我得到了这样一个信息:类型操作中的方法moveToElement(WebElement)不适用于参数(By)谢谢,我已经接受了其他答案,但仍然给您一个+1的时间谢谢!你能再解释一下吗?希望它能帮助你,一个更好的例子是css显示:无