Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
元素不可见硒/C#_C#_Selenium_Xpath_Selenium Webdriver - Fatal编程技术网

元素不可见硒/C#

元素不可见硒/C#,c#,selenium,xpath,selenium-webdriver,C#,Selenium,Xpath,Selenium Webdriver,我通过Xpath获取button元素,但是当尝试单击它时,获取元素不可见异常 登记 父div <div class="modal fade in" id="registration-window" tabindex="-1" role="dialog" aria-labelledby="register-title" aria-hidden="false" style="display: block;"> 在这种情况下通常有帮助的事情列表: : 在单击元素之前移动到该元素:

我通过Xpath获取button元素,但是当尝试单击它时,获取元素不可见异常


登记
父div

<div class="modal fade in" id="registration-window" tabindex="-1" role="dialog" aria-labelledby="register-title" aria-hidden="false" style="display: block;">

在这种情况下通常有帮助的事情列表:

  • :

  • 在单击元素之前移动到该元素:

    Actions builder = new Actions(driver);
    builder.MoveToElement(yourElement).Click().Build().Perform();
    
  • :


要将您可以尝试的内容添加到列表中:

问题可能比元素当前不可见的情况稍微复杂一些。它前面可能有一个不可见的元素,无论你等多久,它都不可见。在这种情况下,您仍然可以通过以下几种方式获得:

使用javascript滚动到它:

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].scrollIntoView()", yourElement);
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click()", yourElement);
或者

使用javascript单击它:

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

在安装了Firepath插件的Firefox中查看您的网页。然后点击F12打开插件,点击FirePath并输入XPath。如果有多个匹配节点,则需要更改XPath,直到只有1个。如果您试图单击的元素没有被蓝色虚线包围,则表示您的目标元素错误


它没有崩溃,似乎找到了元素并单击了它,但什么也没发生。就像它没有点击它一样,有什么线索吗?@Mystia是的,我认为js click aholt建议的应该可以解决这个问题。也许有点愚蠢的问题,但是我应该引用JavasScriptExecutor类,因为我不能使用它atm吗?老实说,我不记得它是如何与C#一起工作的。我为java编写代码的时间太长了。:)我现在正在尝试谷歌搜索。找到它并尝试了它,仍然没有报告任何错误,但它实际上没有点击按钮本身。编辑您的问题以显示您正在使用的xpath,也许。您的选择器可能不正确。
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click()", yourElement);