Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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 硒不';t单击当前屏幕上未显示的元素_Javascript_C#_Selenium Webdriver_Webdriver - Fatal编程技术网

Javascript 硒不';t单击当前屏幕上未显示的元素

Javascript 硒不';t单击当前屏幕上未显示的元素,javascript,c#,selenium-webdriver,webdriver,Javascript,C#,Selenium Webdriver,Webdriver,我打开一个页面,要求selenium单击该页面底部的按钮。该按钮不会显示在当前屏幕上(因此您必须向下滚动才能看到它)。正如我所知,当我使用Click()方法时,selenium必须自动滚动到一个元素 不幸的是,当我执行Click()方法时,它只会滚动到元素而不单击它。 当我在单击元素之前设置一个断点,然后手动滚动到该元素,然后它很好地单击该元素 我有Selenium Webdriver C#v。2.48.2 我使用ChromeDriver v。47.0.2526.106米 在我看来,这个问题在以

我打开一个页面,要求selenium单击该页面底部的按钮。该按钮不会显示在当前屏幕上(因此您必须向下滚动才能看到它)。正如我所知,当我使用
Click()
方法时,selenium必须自动滚动到一个元素

不幸的是,当我执行
Click()
方法时,它只会滚动到元素而不单击它。

我在单击元素之前设置一个断点,然后手动滚动到该元素,然后它很好地单击该元素

我有Selenium Webdriver C#v。2.48.2

我使用ChromeDriver v。47.0.2526.106米

在我看来,这个问题在以前的版本中已经存在(所以,很长一段时间了),但在以前的一些版本中,我可以使用“滚动到元素”方法来解决这个问题现在我使用的方法不起作用。

方法如下:

((IJavaScriptExecutor)Driver).ExecuteScript("arguments[0].scrollIntoView();", webElement);

尝试使用
操作
滚动

Actions action = new Actions(driver);
action.MoveToElement(elementToClick).Build().Perform();
elementToClick.Click();

我想有一些异步工作正在进行,可能是等待窗口。是否加载?在单击任何异常之前,请先尝试将注意力集中在它上?@Saifur单击元素后,我没有发现任何异常,代码只是继续执行。奥列格梅列什科怎么做?如果你说的是滚动到元素,我不知道怎么做,因为WebDriver的上一个版本改变了一些东西,我不能用我的旧代码来做。很抱歉,我不明白你在说什么。我在测试中没有使用任何异步代码。我试过了,谢谢。它向我显示了第二个字符串上的下一个错误:对象与目标类型不匹配。我以前试过同样的代码,但没有“Build”方法。它显示了相同的错误。@DenisKoreyba也许您可以尝试移动到元素父元素。顺便说一下,请确保元素确实已初始化且不为null。元素已正确初始化且不为null。我尝试滚动到另一个元素,效果很好。但这对我来说不是一个很好的解决方案。现在我必须理解滚动到第一个元素的错误。现在的区别在于它们的初始化。第一个(不起作用)由PageFactory初始化,第二个(起作用)仅由“FindElement”方法初始化。@DenisKoreyba页工厂有时会过早初始化元素,因此即使它们不是null,也无法与它们交互。看看我的答案,这就是我处理这个问题的方式。