【问题标题】:Appium parallel test threadlocalAppium并行测试threadlocal
【发布时间】:2022-11-02 14:18:21
【问题描述】:

我正在尝试通过硒网格运行并行测试。

我知道我必须使用“线程本地”进行并行执行, 但我的代码有问题。

无法调用“io.appium.java_client.android.AndroidDriver.findElementByAccessibilityId(String)”,因为“driver”为空

你能解决吗

package appiumset;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Parameters;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.AndroidMobileCapabilityType;
import io.appium.java_client.remote.MobileCapabilityType;

public class _2_Deviceinfo {
    
    
    public ThreadLocal<AppiumDriver> driver = new ThreadLocal<>();
    
    public void setDriver(AppiumDriver driver) {
        this.driver.set(driver);
    }
    
    public AppiumDriver getDriver() {
        return this.driver.get();
    }
    
    
    @Parameters({"device", "apppackage", "activity","version","appiumServer" , "systemPort", "platformName"})
    @BeforeMethod
    public synchronized void deviceSetUp(String device, String apppackage, String activity, String version, String appiumServer, String systemPort, String platformName) throws InterruptedException, MalformedURLException {
        System.out.println("****************************************");
        System.out.println("Setting up device and desired capabilities");
        
        DesiredCapabilities cap = new DesiredCapabilities();
        URL url = new URL(appiumServer);
        
        setDriver(new AndroidDriver<>(url, cap));
        
        cap.setCapability(MobileCapabilityType.DEVICE_NAME, device);
        cap.setCapability(MobileCapabilityType.UDID, device);
        cap.setCapability(AndroidMobileCapabilityType.SYSTEM_PORT, systemPort);
        cap.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 120);

        cap.setCapability(MobileCapabilityType.PLATFORM_NAME, platformName);
        //cap.setCapability(MobileCapabilityType., BrowserType.ANDROID);
        cap.setCapability(MobileCapabilityType.PLATFORM_VERSION, version);
        
    
        
        cap.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, apppackage);
    
        cap.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, activity);
    
        cap.setCapability("automationName", "UiAutomator2");

        cap.setCapability("noReset","false");
        cap.setCapability("FullReset","true");
    
        cap.setCapability("APP_WAIT_ACTIVITY", "*");
        cap.setCapability("autowebview","false");
        
        
    }
    
    
    @AfterMethod
    public void closeDriver() {
        getDriver().quit();
    

    }
}

我找不到驱动程序(AppiumDriver)

package appiumset;

import java.net.MalformedURLException;
import java.util.concurrent.TimeUnit;

import org.testng.annotations.Test;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;


public class _3_Onboarding extends _1_Appstart { 
    

    @Test
    public void onboarding() throws MalformedURLException, InterruptedException  {

        
        System.out.println("_3_Onboarding Start");
        
        MobileElement arrow = driver.findElementByAccessibilityId("next");   
        arrow.click();
        System.out.println("next-done");
    }
    
}

【问题讨论】:

    标签: appium appium-java


    【解决方案1】:

    将您的类 _2_Deviceinfo 的 getdriver() 方法调用到您的测试类。 Appiumdriver<?> driver = getDriver();

    MobileElement 箭头 = driver.findElementByAccessibilityId("next");
    箭头.click();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-22
      • 2016-09-25
      • 2014-04-05
      • 2013-10-31
      • 1970-01-01
      • 2021-10-18
      • 2017-11-07
      • 2020-01-26
      相关资源
      最近更新 更多