Selenium Web 驱动程序

问题描述 投票:0回答:2

我们正在使用 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);

您能帮忙解决这个问题吗?

提前致谢。

selenium webdriver
2个回答
0
投票

你尝试过吗

Thread.Sleep(2000);

我们有同样的问题并用这个简单的方法解决了。


0
投票

不要使用

ExpectedConditions.ElementEx‌​ists
,而是使用
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);
}});
}
© www.soinside.com 2019 - 2024. All rights reserved.