元素不可见

本文关键字:元素 | 更新日期: 2023-09-27 18:01:52

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

当代码到达username.Click();时,我得到"element not visible"。

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();
    }

元素不可见

用户名框不可见。出现在页面上需要时间吗?

你可以使用这个来使元素可见。

为google.com的标志:隐藏google logo

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

让google logo可见

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

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

请尝试通过使用下面的JS

滚动使元素进入视图
document.getElementById('login').scrollIntoView(true);

然后你可以在上面加click()