【发布时间】:2014-11-26 07:55:58
【问题描述】:
我是 Selenium 的新手,使用 C# 登录页面,该页面由用户名、密码和验证码组成。 问题是,对于验证码,它必须等待用户输入并手动提交表单。 我不知道在这个问题上什么解决方案是正确的。 请问有没有更好的办法?
这是我的代码。
var driver = new FirefoxDriver();
driver.Navigate().GoToUrl("http://someonewebite.com/");
IWebElement usernameInput = driver.FindElement(By.Name("txtUserName"));
IWebElement passwordInput = driver.FindElement(By.Name("txtPassword"));
usernameInput.SendKeys("username");
passwordInput.SendKeys("password");
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromMinutes(1));
wait.Until((d) =>
{
return (bool)((RemoteWebDriver)d).ExecuteScript("return document.body.className.match(/\submittedpage\b/).length");
});
【问题讨论】:
-
能否请您定义您希望用户如何输入验证码数据?也许您可以获取图像并将其显示在作为对话框打开的 UserControl 中?这样主线程将被阻塞,直到表单关闭。
-
所以您只想等待验证码显示?你能做的最多就是等待它的底层元素被显示出来,但这并不意味着它里面的实际文本就在那里。在某些 CAPTCHA 中,他们可以将一个元素放入 DOM 并用异步请求填充它。所以你没有确切的方式来说“这个 CAPTCHA 在那里,里面有什么东西吗?”