Ios Safari bug-selenium操作单击方法

Ios Safari bug-selenium操作单击方法,ios,selenium,selenium-webdriver,safari,selenide,windows,java-11,Ios,Selenium,Selenium Webdriver,Safari,Selenide,Windows,Java 11,我得到一个例外: org.openqa.selenium.remote.UnreachableBrowserException:与远程浏览器通信时出错。它可能已经死了 每次我在Safari上使用: Actions action = new Actions(WebDriverRunner.getWebDriver()); action.click(packageCodeButton()).build().perform(); 我使用BrowserStack(iPhone)和Ma

我得到一个例外:

org.openqa.selenium.remote.UnreachableBrowserException:与远程浏览器通信时出错。它可能已经死了

每次我在Safari上使用:

Actions action = new Actions(WebDriverRunner.getWebDriver());
    action.click(packageCodeButton()).build().perform();
    
我使用BrowserStack(iPhone)和MacOS上的设备。当我选择12作为浏览器时,它在MacOS上工作

问题只出现在Safari上,而不出现在任何其他浏览器上。它也不匹配我尝试单击哪个元素或何时单击(在哪个测试阶段)。其他selenium命令工作正常(我使用selenide框架)

有人能帮我解决这个错误吗

有人提出了类似的问题:

但所有浏览器和随机命令都存在零星问题。 在我的例子中,它看起来像某个Safari驱动程序bug

编辑:

堆栈跟踪:

org.openqa.selenium.remote.UnreachableBrowserException:与远程浏览器通信时出错。它可能已经死了。 构建信息:版本:“3.141.59”,修订版:“e82be7d358”,时间:“2018-11-14T08:17:03” 系统信息:主机:'L069G',ip:'10.212.130.34',os.name:'Windows 10',os.arch:'amd64',os.version:'10.0',java.version:'11' 驱动程序信息:Driver.version:RemoteWebDriver 功能{64位:false,acceptSslCert:false,acceptSslCerts:false,automationName:xguitest,bootstrapPath:/usr/local/.browserstack/co.,浏览器:iphone,浏览器名称:safari,浏览器名称:safari,浏览器堆栈隧道:true,browserstack.isTargetBased:false,数据库启用:false,检测到的语言:selenium/3.141.59(java win…,设备:iphone,设备名称:iphone 7,设备定位:肖像,javascriptEnabled:true,locationContextEnabled:false,loggingPrefs:org.openqa.selenium.logging…,手机:{浏览器:手机,版本:iphone 7-12.1},networkConnectionEnabled:false,NewcommMandTimeout:0,new_bucketing:true,noReset:true,orig_os:ios,osVersion:12,os_version:12,platform:MAC,platformName:MAC,platformVersion:12.1,realMobile:true,real_mobile:true,safari.options:{},safariIgnoreFraudWarning:true,safariInitialUrl:http://mobile-internet-chec...,sessionName:,takesScreenshot:true,udid:…,useXctestrunFile:true,版本:,wda_端口:8405,WebStorage Enabled:false,webkitResponseTimeout:20000} 会话ID:

原因:java.lang.IllegalArgumentException:应为一个元素,但为:

BrowserStack可视日志显示信息:

方法尚未实现

此错误消息

org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.
…表示RemoteWebDriver实例突然关闭

完整的错误堆栈跟踪将有助于更好地调试问题。但是,根据本文,可能的原因和解决方案可以是以下任一种:

  • 如果原因是java.net.SocketException:Software-cause-connection abort:recv failed:当连接过早关闭时会发生此错误。这可能是由java中的ssl证书处理引起的,因为所有http通信都是由execute方法处理的,因此非常随机。因此,请重写它并添加简单的重试功能您可以提供一种变通方法

  • 如果原因是java.net.SocketTimeoutException:Read timed out:如果您在一个系统上工作,那么很有可能您已经达到了可能打开的连接的极限。这通常会发生,因为Selenium创建了很多连接,而Windows即使在java触发关闭连接命令时也会保持这些连接的打开/缓存状态假设您需要在以下范围内更改Windows注册表值:

    • HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters:您需要设置/创建两个DWORD值:

      MaxUserPort = 32768
      TcpTimedWaitDelay = 30
      
    MaxUserPort
    将增加可能打开的连接的限制(您可以选择5000-65534之间的任何值,越高越好)。
    TcpTimedWaitDelay
    确保windows将在30秒后关闭过时的连接(已由java关闭)(不能设置为较低,但如果不设置,默认值为4分钟!!!)


其他考虑事项 确保:

  • JDK已升级到当前级别
注意:您正在使用
java.version:'11'
。因为该记录仍然与不完全兼容。有关更多详细信息,请按照讨论进行操作

  • 将硒升级到当前水平

  • 将ChromeDriver升级到当前级别

  • 将Chrome升级到当前的Chrome v84.0()

  • (仅限Windows OS)在执行测试套件之前和之后,使用该工具清除所有操作系统杂务

  • (仅限LinuxOS)在执行测试套件之前和之后

  • 如果您的基本Web客户端版本太旧,请通过卸载它并安装最新的GA和Web客户端发布版本

  • 正如您提到的,每小时运行一组测试用例,可能有多个ChromeDriver和Chrome的悬空实例,可以通过进程列表(Linux操作系统)或任务管理器(Windows操作系统)查看。您需要始终在
    tearDown(){}中调用
    driver.quit()
    关闭并销毁Web驱动程序和Web客户端实例的方法

  • <> LI> < P>如果WebDelphi和Web浏览器的悬空实例仍然存在,考虑用蛮力杀死它们。您可以在

    中找到详细的讨论。
  • 如果您的程序试图从大于5000的端口设置TCP连接,您可以参考以下内容


工具书类 您可以在以下内容中找到一些相关讨论:


您可以使用普通的.click()或javascript方法来代替单击操作吗?-我知道这并不理想,但它可能是解决此问题的一种方法…您是否也让眉毛
MaxUserPort = 32768
TcpTimedWaitDelay = 30