C# 使用Selenium和C在Firefox中查找并关闭对话框#
问题:我的selenium脚本无法识别并关闭当我重定向到包含要下载文件的URl时弹出的对话框。所附图像显示了我所指的对话框 我知道这个问题已经被问了一百万次,我花了至少24小时研究和尝试在网上发布的其他建议,但都没有成功。我希望附件中的图片也能澄清我指的是哪个Firefox对话框 我尝试了以下解决方案C# 使用Selenium和C在Firefox中查找并关闭对话框#,c#,selenium,modal-dialog,C#,Selenium,Modal Dialog,问题:我的selenium脚本无法识别并关闭当我重定向到包含要下载文件的URl时弹出的对话框。所附图像显示了我所指的对话框 我知道这个问题已经被问了一百万次,我花了至少24小时研究和尝试在网上发布的其他建议,但都没有成功。我希望附件中的图片也能澄清我指的是哪个Firefox对话框 我尝试了以下解决方案 1.正在创建IAlerts(未找到警报元素) 2.通过xpath尝试查找元素进行搜索(未找到要取消的xpath) 3.WindowsHandler方法(无法找出窗口名称) 在此方面的任何帮助都将不
1.正在创建IAlerts(未找到警报元素)
2.通过xpath尝试查找元素进行搜索(未找到要取消的xpath)
3.WindowsHandler方法(无法找出窗口名称) 在此方面的任何帮助都将不胜感激。提前谢谢你
有几种类型的“弹出窗口”
alert()
、confirm()
、和prompt()
,可以使用进行处理
、
、
等)以有限的方式与它们交互您所看到的是一个(4)浏览器对话框。根据您在其上执行操作的浏览器的不同,它们会采用不同的形式。你最好的做法可能是发送钥匙。有时,根据浏览器的不同,您可以指定将文件自动下载到特定位置的设置,以避免出现对话框。我从来没有用过这个,所以我不能指导你去那里。我可以通过检查对话框出现后打开的窗口数量来找到并关闭一个下载对话框。这个解决方案对我有效 找到打开对话框的链接并单击它:
var link = MyBrowser.Driver.FindElement(OpenQA.Selenium.By.Id("Button"));
IJavaScriptExecutor js = driver as IJavaScriptExecutor;
js.ExecuteScript("arguments[0].click();", link);
在对话框打开后获取新窗口计数:
var newWindowCount = MyBrowser.Driver.WindowHandles.Count;
切换到新打开的对话框并将其关闭:
MyBrowser.Driver.SwitchTo().Window(MyBrowser.Driver.WindowHandles[newWindowCount-1]);
MyBrowser.Driver.Close();
您需要使用
sendKeys
来处理该对话框。您可能需要通过窗口句柄切换到它(您不需要名称,只需在对话框出现之前记录现有句柄,并查看出现后添加的新句柄)。这里有很多选择:谢谢你的评论。我已经浏览了你分享的链接中的所有示例,但仍然无法识别该窗口。通过句柄循环无法识别对话框。窗口句柄列表只保存初始窗口,因此无法使用SendKeys方法将其分配给webelement。还有其他想法吗?欢迎来到Stack Overflow!虽然这段代码可以解决提问者的问题,但最好解释一下它是如何工作的——你可以通过修改答案来做到这一点。