0

我正在使用 Selenium Web 驱动程序进行测试,但无法通过登录页面。我正在使用的代码:

driver.Navigate().GoToUrl(baseURL + "URL");
driver.FindElement(By.Id("loginForm:username")).SendKeys("uName");
driver.FindElement(By.Id("loginForm:password")).SendKeys("pass");
driver.FindElement(By.Id("loginForm:login")).Click();

元素定位器是正确的并且正在发生登录点击,但之后我没有登录,但页面只是卡在那里 - 没有错误或其他东西。相同的代码在 IDE 中工作。

我正在使用 IE9,并且设置也有所更改:

 var options = new InternetExplorerOptions();
            options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
            driver = new InternetExplorerDriver(options);

任何建议如何克服这个问题?

4

1 回答 1

1

这种情况经常发生在我身上,但不确定你是否也是同样的原因。

当您在本地运行测试时,所有操作(sendkeysclick)都会很快发生。该loginForm:login按钮可以保持禁用状态,直到用户在字段中输入文本loginForm:usernameloginForm:password. 因此,单击该按钮loginForm:login时可能未处于活动状态。

因此,我建议loginForm:login在单击之前使用显式等待来检查元素 id 是否显示。 这一步基本上没有用,但它所做的只是在“发送密钥”到密码文本框字段和单击提交之间浪费一些时间。

此外,为了快速检查,您还可以在输入密码后和单击登录按钮之前执行类似于sleep 2(使脚本休眠 2 秒)的操作。

如果你最终打算在远程机器上运行它,你不需要做以上两个步骤中的任何一个,机器之间的通信造成的时间延迟足以让整个过程顺利进行。

(同样的问题出现在linkedin登录页面——除非输入用户名和密码,否则登录按钮被禁用,但是webdriver执行每一步的速度,登录按钮在被点击时是不活动的。)

于 2012-06-08T13:41:55.123 回答