我正在尝试使用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();
}
答案 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()
就可以了。