【问题标题】:How to deal with this: SessionNotCreatedException: Could not start a new session. Possible causes are invalid address of the remote server如何处理:SessionNotCreatedException:无法启动新会话。可能的原因是远程服务器的地址无效
【发布时间】:2022-01-23 03:19:14
【问题描述】:

伙计们,我对 Appium 和一般测试非常陌生,但我正在学习。我正面临这个错误,老实说,我不知道该怎么办。如果您能提供帮助,我将不胜感激。

我正在尝试在我的 android studio 模拟器上测试这个应用程序。应用来自 GitHub(uni 项目)

Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
    Build info: version: '4.1.0', revision: '87802e897b'
    System info: host: 'LAPTOP-N4P7Q2SH', ip: , os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.1'
    Driver info: io.appium.java_client.android.AndroidDriver
    Command: [null, newSession {capabilities=[Capabilities {platformName: android}], desiredCapabilities=Capabilities {appActivity: org.nearbyshops.whitelabela..., appPackage: org.nearbyshops.whitelabelapp, deviceName: emulator-5554, platformName: android}}]
    Capabilities {}
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:561)
        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:230)
        at io.appium.java_client.AppiumDriver.startSession(AppiumDriver.java:363)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:151)
        at io.appium.java_client.DefaultGenericMobileDriver.<init>(DefaultGenericMobileDriver.java:37)
        at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:89)
        at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:99)
        at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:97)
        at com.company.Main.main(Main.java:29)
    Caused by: java.lang.NoSuchMethodError: 'org.openqa.selenium.remote.ProtocolHandshake$Result org.openqa.selenium.remote.ProtocolHandshake.createSession(org.openqa.selenium.remote.http.HttpClient, org.openqa.selenium.remote.Command)'
        at io.appium.java_client.remote.AppiumCommandExecutor.createSession(AppiumCommandExecutor.java:225)
        at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:250)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
        ... 8 more

这是我的代码

    import io.appium.java_client.MobileElement;
    import io.appium.java_client.android.AndroidDriver;
    import io.appium.java_client.android.AndroidElement;
    import io.appium.java_client.remote.MobileCapabilityType;
    import org.openqa.selenium.remote.DesiredCapabilities;
    import org.testng.Assert;
    
    import java.net.MalformedURLException;
    import java.net.URL;
    
    public class Main {
    
        public static void main(String[] args) throws MalformedURLException {
    
    
            DesiredCapabilities dc = new DesiredCapabilities();
            dc.setCapability(MobileCapabilityType.DEVICE_NAME,  "emulator-5554");
            dc.setCapability("platformName", "android" );
            dc.setCapability("appPackage", "org.nearbyshops.whitelabelapp" );
            dc.setCapability("appActivity", "org.nearbyshops.whitelabelapp.LaunchActivity" );
    
            AndroidDriver<AndroidElement> ad = new AndroidDriver<AndroidElement>(new URL("https://0.0.0.0:4723/wd/hub"),dc);
    
            MobileElement el1 = (MobileElement) ad.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[1]/android.view.ViewGroup/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout[3]/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout[1]/android.widget.FrameLayout/android.widget.ImageView");
            el1.click();
            MobileElement el2 = (MobileElement) ad.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.widget.FrameLayout[1]/android.view.ViewGroup/android.widget.LinearLayout/android.widget.TextView[1]");
            el2.click();
            MobileElement el3 = (MobileElement) ad.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.widget.FrameLayout[1]/android.view.ViewGroup/android.widget.ImageView[3]");
            el3.click();
            MobileElement el4 = (MobileElement) ad.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.widget.FrameLayout[2]/android.view.ViewGroup/android.widget.ImageView[3]");
            el4.click();
            MobileElement el5 = (MobileElement) ad.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.widget.FrameLayout[4]/android.view.ViewGroup/android.widget.ImageView[1]");
            el5.click();
            MobileElement el6 = (MobileElement) ad.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup[1]/androidx.recyclerview.widget.RecyclerView/android.widget.FrameLayout[2]/android.view.ViewGroup/android.widget.ImageView[3]");
            el6.click();
            MobileElement el7 = (MobileElement) ad.findElementById("org.nearbyshops.whitelabelapp:id/item_count");
            el7.click();
    
            Assert.assertEquals(ad.findElementById("org.nearbyshops.whitelabelapp:id/item_count").getText(),1);
    
        }
    }

【问题讨论】:

    标签: selenium android-studio testing intellij-idea appium


    【解决方案1】:

    请使用以下功能来设置您的 android 驱动程序功能,并添加如下更改,

    1. 已添加MobileCapabilityType.VERSION 并添加您真正的android 设备android 版本的价值,
    2. 添加了带有http 的网址并删除了“https”,最终更改为http://0.0.0.0:4723/wd/hub

    请参考以下功能正常,

        DesiredCapabilities dc = new DesiredCapabilities();
        dc.setCapability(MobileCapabilityType.DEVICE_NAME, "emulator-5554");
        dc.setCapability(MobileCapabilityType.VERSION, "11");
        dc.setCapability("platformName", "android");
        dc.setCapability("appPackage", "org.nearbyshops.whitelabelapp");
        dc.setCapability("appActivity", "org.nearbyshops.whitelabelapp.LaunchActivity");
        AndroidDriver<AndroidElement> ad = new AndroidDriver<AndroidElement>(new URL("http://0.0.0.0:4723/wd/hub"), dc);
    

    【讨论】:

    • 谢谢,效果很好
    猜你喜欢
    • 2022-01-04
    • 2017-11-02
    • 2020-02-25
    • 2019-04-25
    • 1970-01-01
    • 2019-07-07
    • 2015-09-07
    相关资源
    最近更新 更多