我们正在使用 C#.Net 中的 Selenium Web 驱动程序开发 IE 自动化。
我们在处理模型弹出窗口时遇到异常。我们应该做下面的动作。
当我们单击“链接”按钮时,它将打开一个弹出窗口,然后我们需要切换到弹出窗口,选择复选框选项,然后单击“提交”按钮。
单击“链接”按钮时,我们可以打开弹出窗口。但在这里我们面临一个问题,比如子弹出窗口未加载数据并收到 HTTP 500 内部服务器错误。
我不明白有时它可以使用相同的代码正常工作,但当我尝试在子窗口上执行上述操作时,并非所有时候我都会遇到上述问题。
这是任何 IE 设置问题还是我的代码问题,即使我忽略了 IE 设置中的保护模式设置。
我正在尝试使用以下代码:
js.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id='ByNewNotes']")));
(或)
string jsWindowString = "NewWindow('pop_Type.jsp?Type=External&IuserId=NUVJK50'," + sessionId + ",'400','500');return false";
((IJavaScriptExecutor)driver).ExecuteScript(jsWindowString);
您能帮忙解决这个问题吗?
提前致谢。
你尝试过吗
Thread.Sleep(2000);
我们有同样的问题并用这个简单的方法解决了。
不要使用
ExpectedConditions.ElementExists
,而是使用 ExpectedConditions.elementToBeClickable
或 presenceOfElementLocated
WebDriverWait wait = new WebDriverWait(driver, 60);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath(""//*[@id='ByNewNotes']")));
element.click();
尝试使用
FluentWait
。创建一个要等待的元素的 by 函数并将其传递到下面的方法中
WebElement waitsss(WebDriver driver, By elementIdentifier){
Wait<WebDriver> wait =
new FluentWait<WebDriver>(driver).withTimeout(60, TimeUnit.SECONDS) .pollingEvery(1, TimeUnit.SECONDS).ignoring(NoSuchElementException.class);
return wait.until(new Function<WebDriver, WebElement>()
{
public WebElement apply(WebDriver driver) {
return driver.findElement(elementIdentifier);
}});
}