Selenium ChromeDriver - 元素永远不可见

时间:2017-10-07 19:50:02

标签: c# selenium selenium-chromedriver

我尝试将密钥发送到输入字段但不能这样做... 我已经尝试了不同的方法来等待元素可见但是超时异常......

IWebElement userName = driver.FindElement(By.Id("UserName"));
IWebElement userPassword = driver.FindElement(By.Id("Password"));
IWebElement subButton = driver.FindElement(By.XPath(("//button[contains(.,'Вхід')]")));
while (true)
{
    userName = driver.FindElement(By.Id("UserName"));
    if (userName.Displayed)
    {
        userName.SendKeys("test");
        break;
    }
}
subButton.Click();

使用此方法会让我总是超时:

public static void WaitForElementLoad(By by, int timeoutInSeconds)
{
    if (timeoutInSeconds > 0)
    {
        WebDriverWait wait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(timeoutInSeconds));
        wait.Until(ExpectedConditions.ElementIsVisible(by));
    }
}

2 个答案:

答案 0 :(得分:1)

如果隐藏的只是通过selenium发送/执行一个简单的js来显示元素。但它不可能有点棘手。将窗口大小设置为更大的窗口大小,例如2000x2000。如果未在视口中放置某些内容,则selenium将无法看到它。

答案 1 :(得分:0)

请尝试使用JavaScript滚动到元素,然后对元素执行其他操作

((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);