元素不可见
本文关键字:元素 | 更新日期: 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()
。