我正在使用selenium的driver.Quit()来使用C#代码关闭firefox。它正在关闭Firefox,但是说Firefox已经停止工作了。
那么使用代码退出firefox的代码或任何其他方法可能存在什么问题。请建议。
日志:
问题签名: 问题事件名称:APPCRASH 应用程序名称:firefox.exe 应用版本:50.1.0.6186 应用程序时间戳:5849ff9c 故障模块名称:mozglue.dll 故障模块版本:50.1.0.6186 故障模块时间戳:5849ff8b 例外代码:80000003 例外偏移:0000ec79 操作系统版本:6.1.7601.2.1.0.256.48 区域设置ID:1033 附加信息1:0a9e 附加信息2:0a9e372d3b4ad19135b953a78882e789 附加信息3:0a9e 附加信息4:0a9e372d3b4ad19135b953a78882e789
在线阅读我们的隐私声明: http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409
如果没有在线隐私声明,请离线阅读我们的隐私声明: C:\ WINDOWS \ SYSTEM32 \ EN-US \ erofflps.txt
谢谢, Lokesh
答案 0 :(得分:1)
不知道C#selenium。但是在Python中我们使用webdriver.close()并且可以使用webdriver.quit()
答案 1 :(得分:0)
这似乎是目前Selenium 3.0的一个已知问题:https://github.com/mozilla/geckodriver/issues/173
如果您在测试中绝对需要使用firefox,则可以始终结束该过程而不是正确退出。我不一定会推荐这种方法,但在问题得到正式解决之前,这可能是目前避免崩溃窗口的最佳选择:
string sProcessName = "firefox";
if (oBrowser.Capabilities.BrowserName == sProcessName) {
// Special fix for firefox because of issue https://github.com/mozilla/geckodriver/issues/173
// Kills all firefox processes
Process[] oProccesses = null;
bool bFound = true;
while (bFound == true) {
bFound = false;
oProccesses = System.Diagnostics.Process.GetProcessesByName(sProcessName);
foreach (Process oCurrentProcess in oProccesses) {
bFound = true;
oCurrentProcess.Kill();
}
}
} else {
// Close browser properly
oBrowser.Quit();
}