Chromedriver session Error.Session未创建:Chrome 版本必须>= 60.0.3112.0(chromedriver=2.33.506092,platform



我的应用是混合应用(不是本机应用)。因此,为了将上下文从本机更改为混合,我创建了Android驱动程序的实例。三次交换后,我想更改上下文。所以我用 driver.context(contextList.get(1)); 据我所知,错误只是因为上面的行而来的。除此之外还有什么选择吗??

import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import io.appium.java_client.remote.MobilePlatform;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.Test;

public class App {
@Test
public void test_1() throws MalformedURLException, InterruptedException {
// TODO Auto-generated method stub
DesiredCapabilities capa = new DesiredCapabilities();
capa.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);

capa.setCapability(MobileCapabilityType.DEVICE_NAME, "DeviceID");
capa.setCapability("udid", "DeviceID");
capa.setCapability("appPackage", "packagenamegiven");
capa.setCapability("appActivity", "packagenamegiven.MainActivity");
AndroidDriver driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), capa);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
WebElement me = driver.findElement(By.className("android.webkit.WebView"));
int wide = me.getSize().width;
int hgt = me.getSize().height;
int startx = (int) (wide * (0.8));
int endx = (int) (wide * (0.2));
int starty = hgt / 2;
int endy = hgt / 2;
driver.swipe(startx, starty, endx, endy, 1000);
// 2nd Screen
me = driver.findElement(By.className("android.webkit.WebView"));
wide = me.getSize().width;
hgt = me.getSize().height;
startx = (int) (wide * (0.8));
endx = (int) (wide * (0.2));
starty = hgt / 2;
endy = hgt / 2;

driver.swipe(startx, starty, endx, endy, 1000);
// 3rd Screen
me = driver.findElement(By.className("android.webkit.WebView"));
wide = me.getSize().width;
hgt = me.getSize().height;
startx = (int) (wide * (0.8));
endx = (int) (wide * (0.2));
starty = hgt / 2;
endy = hgt / 2;
driver.swipe(startx, starty, endx, endy, 1000);
driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
Set<String> allContexts = driver.getContextHandles();
allContexts.stream().forEach(x -> System.out.println(x));
ArrayList<String> contextList = (ArrayList<String>) allContexts.stream().collect(Collectors.toList());
driver.context(contextList.get(1));
System.out.println("Present context is :"+driver.getContext());
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.quit();
System.out.println("Test is Successful");
}
}

输出/异常即将到来

NATIVE_APP WEBVIEW_packagenamegiven失败:test_1 org.openqa.selenium.WebDriverException: 未知的服务器端错误 在处理命令时发生。原始错误:未能 启动 Chrome 驱动程序会话:无法创建新会话。 (原始错误:会话未创建异常:Chrome 版本必须

= 60.0.3112.0 (驱动程序信息: chromedriver=2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4),platform=Linux 4.10.0-42-通用x86_64))(警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:4.06 秒 版本信息:版本:"2.50.1",修订版:"d7fc91b29de65b790abb01f3ac5f7ea2191c88a7",时间:'2016-01-29 11:11:26' 系统信息: 主机: 'about-system-info', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.10.0-42-generic', java.version: '1.8.0_131' 驱动程序信息: io.appium.java_client.android.AndroidDriver 功能 [{appPackage=packagename, deviceScreenSize=720x1280, networkConnectionEnabled=true, warnings={}, databaseEnabled=false, deviceName=EP732287GB, platform=LINUX, deviceUDID=EP732287GB, appActivity=packagename。MainActivity, desired={appPackage=packagename, appActivity=packagename。MainActivity, platformName=Android, udid=deviceId, deviceName=DeviceId}, platformVersion=5.0.2, webStorageEnabled=false, locationContextEnabled=false, takesScreenshot=true, javascriptEnabled=true, deviceModel=C5502, platformName=Android, udid=deviceId, deviceManufacturer=Sony}] 会话 ID: 02bd3479-850b-4cfb-a541-360a2117cf0f at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206) at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678) 在io.appium.java_client。DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42) 在io.appium.java_client。AppiumDriver.execute(AppiumDriver.java:1) at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) 在io.appium.java_client。AppiumDriver.context(AppiumDriver.java:546) 在package_name。App.test_1(应用.java:83) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80) at org.testng.internal.Invoker.invokeMethod(Invoker.java:714) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) at org.testng.TestRunner.privateRun(TestRunner.java:767) at org.testng.TestRunner.run(TestRunner.java:617) at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) at org.testng.SuiteRunner.run(SuiteRunner.java:240) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1198) at org.testng.TestNG.runSuitesLocal(TestNG.java:1123) at org.testng.TestNG.run(TestNG.java:1031) at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114) at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)

===============================================
Default test
Tests run: 1, Failures: 1, Skips: 0
===============================================

===============================================
Default suite
Total tests run: 1, Failures: 1, Skips: 0
===============================================

错误说明了一切:

org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Failed to start Chromedriver session: A new session could not be created. (Original error: session not created exception: Chrome version must be >= 60.0.3112.0

您的主要问题是您使用的二进制文件之间的版本兼容性,如下所示:

  • 您正在使用chromedriver=2.33
  • chromedriver=2.33发行说明明确提到以下内容:

Supports Chrome v60-62

  • 您正在使用的版本Chrome Browser我们不知道,但可能低于v60.x。日志Chrome version must be >= 60.0.3112.0清楚地确认了错误

  • 您正在使用稍旧的Selenium Version 2.50.1(发布时间: '2016-01-29 11:11:26')。

  • 你的JDK version1.8.0_131也有点旧。

因此,chromedriver版本 (v2.33) 和匹配要求(即Chrome v60-62)之间存在明显的不匹配

溶液

  • JDK升级到最近的级别JDK Version 8 Update 151
  • Selenium升级到当前级别Version 3.8.1
  • ChromeDriver升级到ChromeDriver v2.35级别。
  • Chrome Browser保持在v64.x水平。(根据ChromeDriver v2.35发行说明)
  • 如果您的Chrome 浏览器基本版本较旧,请尝试通过 Revo 卸载程序卸载 Chrome 浏览器,然后安装所需的Chrome 浏览器的最新 GA 发布版本。
  • 测试执行之前清除浏览器缓存
  • 在执行测试套件之前和之后运行CCleaner工具。
  • 执行您的Test

由于它是一个混合应用程序,它还需要匹配appium内部的chromedrive.exe和移动设备中安装的 chrome(因为 chrome 是 android 中的默认浏览器)。

因此,请尝试在移动设备中更新chrome浏览器(如果未更新),并在appium中使用最新的chromedriver.exe(C:Program Files (x86)Appiumnode_modulesappiumnode_modulesappium-chromedriverchromedriverwin)

希望这能解决您的问题。

最新更新