[英]Selenium C# waiting for page to load - UnexpectedJavaScriptError
[英]selenium testing in c# UnexpectedJavaScriptError
我想找到一个textbox id= UserName
并给它一个value =sa
,
我的测试有问题。
错误显示UnexpectedJavaScriptError
。
这是怎么回事? 我该如何解决这个问题?
这是我的代码。
public void SetupTest()
{
driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 30));
driver.Navigate().GoToUrl(**the WEBSITE url**);
}
public void Test1()
{
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("document.getElementById('UserName').value='sa'");
}
谢谢
我在日常工作中使用 Selenium,这种代码应该可以正常工作。 我认为问题可能是当您尝试使用它时该元素不存在。
我的建议是尝试这样的事情:
try {
var element = document.getElementById('UserName');
if(element) {
element.value = 'sa';
}
} catch(e) {}
我实际上在我们的 selenium 代码中有一个“jquery”辅助方法,它使用 jQuery 查找元素,然后返回 [0] 元素,以便我们可以将它与 Selenium API 一起使用。
private IWebElement GetFirstElement()
{
return (IWebElement)((IJavaScriptExecutor)_driver).ExecuteScript("return $(\"" + _selector + "\")[0];", null);
}
此外,您可能只需要等到元素出现在屏幕上。 一种简单的方法是使用 Selenium 的 FindElement(By...),因为 Selenium 将等待元素出现的可配置时间量。
如果你这样做,对于这种情况完全避免 JavaScript 可能更有意义,但你正在尝试做的事情应该在一个完美的场景中工作。
您无法使用 selenium 网络驱动程序访问 DOM。 除了使用 javascript 之外,您还可以使用以下代码片段实现相同的目的
string text = "sa";
IWebElement element = driver.FindElement(By.Id("UserName"));
element.SendKeys(text);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.