[英]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.