元素不可见Selenium / C#

时间:2015-08-04 14:00:22

标签: c# selenium xpath selenium-webdriver

我通过 Xpath 获取了按钮元素,但是当尝试点击它时,元素不可见异常

<div class="modal-footer">
   <button id="btnRegister" type="button" class="btn btn-primary btn-block">Register</button>
</div>

父div

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

3 个答案:

答案 0 :(得分:7)

要添加到您可以尝试的事项列表中:

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

使用javascript:

滚动到它
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].scrollIntoView()", yourElement);

...或

点击javascript:

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

答案 1 :(得分:3)

在这种情况下通常有用的事项列表:

  • maximize the browser window

    driver.Manage().Window.Maximize();
    
  • 在点击之前移动到元素:

    Actions builder = new Actions(driver);
    builder.MoveToElement(yourElement).Click().Build().Perform();
    
  • wait for element to become clickable

    var wait = new WebDriverWait(driver, TimeSpan.FromMinutes(1));
    var clickableElement = wait.Until(ExpectedConditions.ElementIsClickable(By.Id("id")));
    

答案 2 :(得分:0)

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

enter image description here