当前位置: 首页 > 知识库问答 >
问题:

使用Selenium和NUnit控制台时出现Chrome驱动程序错误:无法发现打开的页面

李安歌
2023-03-14

我所有的Selenium测试只有在通过Cruisecontrol运行时才会失败。net,而使用同一个用户(cc.net在其上运行)通过命令行运行它似乎没问题。

在cc上运行。net还导致了超过30~40个chromedriver进程的开放,最终导致“无法发现打开的页面”。在命令行上运行很好,只有一个chromedriver进程。

到目前为止,我已经尝试:--no-沙盒选项,电源设置更改该用户,更新ChromeDrive到最新版本

任何帮助都是高度赞赏的......

共有3个答案

赵河
2023-03-14

我也有同样的问题。我设置的(丑陋的)解决方案是:

  • 在CI服务器上打开会话

现在,selenium Web驱动程序可以连接到在其特定端口上监听的chrome驱动程序,并与之进行图形会话交互。

牛迪
2023-03-14

我在MSTestMicrosoft测试代理中遇到了完全相同的问题,下面是我如何解决这个问题的解决方案。但是,我不知道CruiseControl,所以我不知道是否可以安装它作为进程运行。

基本上,测试代理是作为服务安装的,从Windows(NT)服务启动的每个进程都在会话0上运行,对登录用户不可见。

Chrome正试图离开会话0,你可以在这里找到更多的参考(下面链接中的注释21,但实际上整个线程是一个很好的阅读关于这个主题):https://bugs.chromium.org/p/chromium/issues/detail?id=615396#c21

现在,要解决这个问题,有几个选项可供选择:从Chrome下载金丝雀版本,但不建议这样做,因为这只是一个临时修复。Chrome开发者表示,在不久的将来,Chrome(和ChromeDriver)将不再提供0。

最好的解决方案是将MS测试代理安装为一个进程,以便登录的用户可以看到所有应用程序。更多详细信息可以在这里找到:https://msdn.microsoft.com/en-us/library/ee291332.aspx

另一个选择是将下面的设置添加为Chrome参数,但是我没有使用测试代理作为Windows服务进行测试,所以我不知道它是否工作,但我可以确认它作为一个进程与测试代理一起工作。

var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments("test-type");
chromeOptions.AddArguments("--disable-extensions");
chromeOptions.AddArguments("no-sandbox");
var driver = new ChromeDriver(chromeOptions);

至于ChromeDriveropen的多个实例,同样的问题是MSTest,所以可能NUnit不同,但我的问题是TestInitialize方法的测试失败。发生这种情况时,TestCleanup不再被调用。似乎只有当TestMethod失败并拥有我的驱动程序时,TestCleanup才会执行。退出() TestCleanupI中的code>语句结束时,由于打开的ChromeDriver实例的数量,测试服务器上的内存耗尽。

宰父飞翼
2023-03-14

我在过去通过CCNet运行一些任务时遇到过问题,这些任务通常需要在MS窗口的上下文中创建窗口

这意味着任何试图创建一个新(可见)窗口的进程或子进程都可能出现错误行为。控制台窗口似乎很好,因为它们共享一个公共实例(可能?)。从经验和测试来看,这是微软windows的一个“问题”,没有局限于CCNet。

我在selenium中遇到过这种情况,因为它通常驱动一个浏览器(浏览器本身试图显示一个窗口)。我在CCNet中成功地使用了通过selenium驱动的PhantomJs(作为有限服务运行时)

如果windows服务设置为以系统运行,则您可以允许该服务“与桌面交互”。这允许服务在服务帐户下创建新窗口。然而,根据我的经验,这只有在连接了用户会话时才起作用*;从会话断开连接会返回到非工作行为。

*此时windows会提示用户连接到系统服务窗口站,以查看交互式内容(windows)。它可能只在windows server上受支持,我想我只有在通过远程桌面连接到服务器时才看到它。

除了通过PSEXEC将流程调用到服务器/会话上(其行为符合预期且一致),我找不到解决这个问题的优雅解决方案。

 类似资料:
  • 我得到一个Chrome驱动程序相关的错误时运行我的Selenium测试。错误消息是“无法发现打开的页面”。硒测试一直到昨天晚上都正常。问题似乎是在前一天重新启动服务器后开始的。我无法在本地框上复制此错误。在服务器上从命令行运行Selenium测试确实会打开Chrome浏览器,但会导致相同的错误。有什么想法吗? 无法发现OpenQa.Selenium.Remote.RemoteWebDriver.U

  • 问题内容: 运行Selenium测试时出现与Chrome驱动程序相关的错误。错误消息是“ 无法发现打开的页面。 ”直到昨天晚上,Selenium测试都运行良好。前一天重新启动服务器后,问题似乎开始出现。我无法在本地机器上重现此错误。从服务器上的命令行运行Selenium测试确实会打开Chrome浏览器,但会导致相同的错误。有任何想法吗? 失败的行: 错误消息和堆栈跟踪: 无法在OpenQA.Sel

  • 问题内容: 我正在尝试运行一个ruby文件,该文件将使用seleniumwebdriver启动chrome驱动程序。我有selenium独立服务器2.35.0。和chromedriver可执行文件已安装。我正在通过运行服务器来启动 两个会话正在启动,chrome驱动程序无法启动。 这是在我使用以下文件运行文件之后 我对此并不陌生,无法找出问题所在。而且,我也试图让它无头运行,所以我正在运行Xvfb

  • 我试图运行一个ruby文件,这将启动chrome驱动程序使用selenium WebDriver。我有selenium独立服务器2.35.0。和chromedriver可执行文件安装。我通过运行来启动服务器, 这是在我使用 我对此很陌生,不知道哪里出了问题。我也试图无头运行它,所以我有Xvfb运行。有人能帮我指出我犯的错误并启动chromedriver吗? 更新: 谁能帮我弄清楚出了什么问题吗?

  • 我正在学习SeleniumWebDriver,在成功使用firefox之后,现在我想尝试启动Chrome。所以我设置了它的驱动程序 但是当代码流到达驱动程序时。get()指令我收到此异常: 并显示此页面: “只允许本地连接”是什么意思?如何修复?

  • 当我试图在eclipse中使用带有Java的selenium驱动程序调用chrome浏览器时,我得到了一个错误。