Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用SeleniumWebDriver检查元素是否进入视图?_Javascript_Selenium_Selenium Webdriver_Webdriver_Js Scrollintoview - Fatal编程技术网

Javascript 如何使用SeleniumWebDriver检查元素是否进入视图?

Javascript 如何使用SeleniumWebDriver检查元素是否进入视图?,javascript,selenium,selenium-webdriver,webdriver,js-scrollintoview,Javascript,Selenium,Selenium Webdriver,Webdriver,Js Scrollintoview,我必须检查一个元素是否在视图中,如果不在视图中,只需使用以下命令将其滚动到视图中,然后与之交互- ((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", element); 如果一个元素在视图中,不要执行上面的命令。要检查元素是否在视图中,isDisplayed()没有帮助,因为无论元素是否在视图中,它都返回true 您能建议一下什么有助于检查元素是否在视图中吗?要与元素交互,元素需要在视图中。如

我必须检查一个元素是否在视图中,如果不在视图中,只需使用以下命令将其滚动到视图中,然后与之交互-

((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", element);
如果一个元素在视图中,不要执行上面的命令。要检查元素是否在视图中,
isDisplayed()
没有帮助,因为无论元素是否在视图中,它都返回true


您能建议一下什么有助于检查元素是否在视图中吗?

要与元素交互,元素需要在视图中。如果该元素不在视口中,则必须按如下方式
滚动()

((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", element);
((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("button.nsg-button"))));
您可以在中找到有关不同滚动选项的详细讨论


在这一点上,值得一提的是以下方法:

  • 和类中的其他方法
  • 来自课堂
将在执行之前自动滚动视口中的元素

您可以在中找到详细的讨论


最后,在最罕见的情况下,如果由或元素组成,您甚至可能必须在尝试按如下方式滚动之前,为元素located()的
可见性诱导WebDriverWait:

((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", element);
((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("button.nsg-button"))));

显示的信息应该有效。你检查过这个箱子了吗。元素的不透明度为0。2.该元素可见,但被另一个元素覆盖。尝试使用driver.findElement(By.id(“idOfElement”).isDisplayed();或者检查size driver.findElements(by).size()>0以确定是否显示该元素。请参阅此以获得一个好的答案-也是此-请参阅此@demouser123,感谢您指向答案。我真的帮了大忙!