我在页面上有一个简单的提交按钮,我需要为它发送一个点击,但是此按钮位于页面底部,除非用户使用浏览器垂直滚动条到达它,否则不会出现! / p>
所以当我使用这个C#代码时,我得到的错误元素是不可见的,所以我怎么能解决这个问题呢?
driver.FindElement(By.Id("submit")).Click();
答案 0 :(得分:1)
您可以使用javascript向下滚动。这样的事情应该做的工作。
((JavascriptExecutor) driver).executeScript("window.scrollTo(0, document.body.scrollHeight)");
答案 1 :(得分:1)
如果可见,Selenium Webdriver会隐式滚动到该元素。您可以等待元素的可见性,然后执行单击操作。在Java中,我们可以使用以下代码等待可见性:
WebDriverWait wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.visibilityOfElementLocated(driver.findElement(By.id("submit"))));
在上面的代码中,Webdriver将等待60秒,以使所需元素可见。如果在60秒内没有出现该元素,那么它将因超时错误而失败。一旦所需元素可见,就可以点击它。
答案 2 :(得分:0)
如果您看不到它,则不会通过您的硒驱动程序使用的浏览器呈现 我建议您模拟滚动以确保您的项目可见,或者以更大的分辨率进行模拟? 最终你可以考虑换到无头司机......
答案 3 :(得分:0)
我发现问题在页面中有两个元素,id =“submit”!!我使用了Name,现在它工作正常,感谢所有人。