在打开模态对话框时单击超时
本文关键字:单击 超时 对话框 模态 | 更新日期: 2023-09-27 18:15:21
目前我正在CMS内自动化编辑器,其中包括许多选项,如插入链接和更改文本颜色。
我面临的问题是,在单击工具栏按钮之一时,执行javascript命令启动模态对话框
由于某种原因,这个模态对话框导致我的代码挂在点击命令上,直到它被手动关闭或点击超时后60秒
下面是我的代码示例
try
{
// the click that opens the modal dialog
driver.FindElement(By.Id("CreatArticle")).Click();
// the code then hangs on the click command above until
//it times out or the modal dialog is manually closed
System.Windows.Forms.MessageBox.Show("This message box never shows");
}
catch(exception e)
{
//this writes the exception to an error log
testLog("Page creation failed, reason: " + e);
}
我收到的异常消息
> Article creation failed, reason: OpenQA.Selenium.WebDriverException:
> The HTTP request to the remote WebDriver server for URL
> http://localhost:63377/session/adde8cea404a930e9086e1782afcbcf5/element/0.03468421520665288-16/click
> timed out after 60 seconds. ---> System.Net.WebException: The
> operation has timed out at System.Net.HttpWebRequest.GetResponse()
> at
> OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest
> request) in
> c:'Projects'webdriver'dotnet'src'webdriver'Remote'HttpCommandExecutor.cs:line
> 142 --- End of inner exception stack trace ---
我也试过通过js.executeScript()命令点击工具栏按钮,并得到了相同的结果,但是异常是"60秒后执行超时"。
我建议的一个选项是多线程,当初始线程挂起时,第二个线程处理对话框。硒能够做到这一点,还是有另一种方法,我可以尝试?编辑这是我发现的一个例子https://developer.mozilla.org/samples/domref/showModalDialog.html
你能提供一个UI屏幕你面对什么样的对话框?
1)情况1。如果是jsAlert,我会尝试:
Alert alert = driver.switchTo().alert();
alert.accept();
2)另一种方法(在使用多个浏览器实例并行测试时不被认为是一种健壮的方法):
//在处理Robot类实例的对话框中按enter键
Robot robot = new Robot();
robot.delay(2000);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
Java中的Robot类将提供更多的Robot使用案例。
我已经找到解决我自己问题的办法了
https://code.google.com/p/selenium/issues/detail?id=284 <标题> 134 de…@mingulov.com h1>你好,
为我在Firefox上解决相同问题的一个解决方案-使用异步点击,例如JavaScript setTimeout。
所以不用
element.click
使用类似
的内容司机。execute_script("var el =参数[0];setTimeout(function() {el.click();}, 100);', element)
希望它有帮助,因为它是相当直接的-直到这个问题将被修复。
标题>