2017-08-31 138 views
0

我们正在使用C#.Net中的Selenium Web驱动程序开发IE Automation。Selenium Web驱动程序

我们正在处理模型弹出窗口时发生异常。我们应该在行动之下做。

当我们点击链接按钮,它会打开一个弹出窗口,然后我们需要切换到弹出窗口选择复选框选项,并点击提交按钮。

当点击链接按钮时,我们可以打开弹出窗口。但是在这里,我们正面临着一个问题,例如子弹出窗口没有加载数据并获取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); 

能否请您对这个问题有所帮助。

在此先感谢。

+0

你试图等待代码 –

+0

是的,我试过 新WebDriverWait(驱动程序,TimeSpan.FromSeconds(45)),直到(ExpectedConditions.ElementExists((By.XPath( “// * [@ ID = 'ByNewNotes']” ))))点击(); –

+0

请仔细阅读[问],特别是关于[mcve](MCVE)的部分,以及[预计需要多少研究工作?](https://meta.stackoverflow.com/questions/261592/how-much-research-effort这是预期的堆栈溢出用户)这将帮助您调试自己的程序并为自己解决问题。如果你这样做并且仍然卡住,你可以回过头来发布你的MCVE,你试过的,以及执行结果,包括任何错误信息,这样我们可以更好地帮助你。还提供了一个链接到页面和/或相关的HTML。 – JeffC

回答

0

而不是使用ExpectedConditions.ElementEx‌​ists使用ExpectedConditions.elementToBeClickablepresenceOfElementLocated

 WebDriverWait wait = new WebDriverWait(driver, 60); 
    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath(""//*[‌​@id='ByNewNotes']"))); 
    element.click(); 

可尝试使用FluentWait的。由要等待并把它传递以下方法

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); 
}}); 
} 

希望它会帮助你:)你的元素的函数创建一个

0

你试过

Thread.Sleep(2000); 

我们有相同的问题和解决这个简单的方法。

相关问题