Ios Safari bug-selenium操作单击方法
我得到一个例外: org.openqa.selenium.remote.UnreachableBrowserException:与远程浏览器通信时出错。它可能已经死了 每次我在Safari上使用: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
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
将增加可能打开的连接的限制(您可以选择5000-65534之间的任何值,越高越好)。MaxUserPort
确保windows将在30秒后关闭过时的连接(已由java关闭)(不能设置为较低,但如果不设置,默认值为4分钟!!!)TcpTimedWaitDelay
- HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters:您需要设置/创建两个DWORD值:
其他考虑事项 确保:
- JDK已升级到当前级别
java.version:'11'
。因为该记录仍然与不完全兼容。有关更多详细信息,请按照讨论进行操作
- 将硒升级到当前水平
- 将ChromeDriver升级到当前级别
- 将Chrome升级到当前的Chrome v84.0()
- (仅限Windows OS)在执行测试套件之前和之后,使用该工具清除所有操作系统杂务
- (仅限LinuxOS)在执行测试套件之前和之后
- 如果您的基本Web客户端版本太旧,请通过卸载它并安装最新的GA和Web客户端发布版本
- 正如您提到的,每小时运行一组测试用例,可能有多个ChromeDriver和Chrome的悬空实例,可以通过进程列表(Linux操作系统)或任务管理器(Windows操作系统)查看。您需要始终在
关闭并销毁Web驱动程序和Web客户端实例的方法tearDown(){}中调用
driver.quit()
<> LI> < P>如果WebDelphi和Web浏览器的悬空实例仍然存在,考虑用蛮力杀死它们。您可以在中找到详细的讨论。
- 如果您的程序试图从大于5000的端口设置TCP连接,您可以参考以下内容
工具书类 您可以在以下内容中找到一些相关讨论:
MaxUserPort = 32768
TcpTimedWaitDelay = 30