元素不可见

时间:2014-05-05 19:08:44

标签: c# javascript selenium-webdriver

我正在尝试使用Chrome WebDriver登录网站。唯一的问题是看起来您放置用户名的文本框不可见。当我运行代码时,如果我手动点击用户名所在的框,那么程序将完成没有问题。如何使元素可见,以便点击它?

当代码到达username.Click();时,我得到"元素不可见"。

static void Main(string[] args)
    {
        var driver = new ChromeDriver();
        var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
        driver.Navigate().GoToUrl("http://contoso.com/");
        var loginPopUp = wait.Until(d => driver.FindElement(By.XPath("//*[@id='user-menu']/li[2]/a")));
        loginPopUp.Click();
        var username = wait.Until(d => driver.FindElement(By.XPath("//*[@id='login']")));
        const string script = "document.getElementById('login').style.visibility='visible';";
        driver.ExecuteScript(script);
        username.Click();
        username.Clear();
        username.SendKeys("someuser@gmail.com");
        var password = wait.Until(d => driver.FindElement(By.XPath("//*[@id='password']")));
        password.SendKeys("thepassword");
        var login = wait.Until(d => driver.FindElement(By.XPath("//*[@id='popup-body']/div/div[3]/div[5]/a")));
        login.Click();
    }

2 个答案:

答案 0 :(得分:1)

用户名框不可见。是否需要时间才能显示在页面上?

您可以使用它来使元素可见。

对于google.com徽标: 隐藏Google徽标

document.getElementById('hplogo').style.display='none'

让谷歌徽标可见

document.getElementById('hplogo').style.display='block'

在测试中捕获屏幕截图以调试问题。

答案 1 :(得分:0)

请尝试使用以下JS

滚动来查看元素
document.getElementById('login').scrollIntoView(true);

然后你可以click()就可以了。