1

获取异常失败配置:@AfterClass tearDown “org.openqa.selenium.UnsupportedCommandException:找不到请求的资源,或者使用映射资源不支持的 HTTP 方法接收到请求”

enter code here

public class BaseClass {
//read config file and initiate variables
ReadConfig readConfig = new ReadConfig();
public String username = readConfig.getUserName();
//public String password = "asas";
public String password = readConfig.getPassword();


public static AppiumDriver driver;
public static org.apache.logging.log4j.Logger logger;


@BeforeClass
public void setUp ()
{
    
    try {
        
    logger = LogManager.getLogger(BaseClass.class);
    
    DesiredCapabilities dc = new DesiredCapabilities();
    dc.setCapability(MobileCapabilityType.DEVICE_NAME, "bd178829");
    dc.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
    dc.setCapability(MobileCapabilityType.APP, "D:\\automation\\CRMNextMobileAutomation\\src\\test\\resources\\apps\\CRMNextNative 6.29.0-release_screenshot_enabled.apk");
    dc.setCapability("automationName","UiAutomator2");
    dc.setCapability("appPackage", "com.crmnextmobile.crmnextofflineplay");
    dc.setCapability("appActivity", "com.crmnextmobile.crmnextofflineplay.qr.QrScannerActivity");
    dc.setCapability("enforceAppInsall", true);

    URL url = new URL("http://127.0.0.1:4723/wd/hub");
    
    driver = new AppiumDriver(url,dc);
    driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
    
    System.out.println("CRMNext automation start..");
    driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
    
    //Clicking on Allow option on open permission pop up
    //driver.findElement(By.id("com.android.permissioncontroller:id/permission_allow_button")).click();
    
    if(!driver.findElements(By.id ("com.android.permissioncontroller:id/permission_allow_button")).isEmpty()){
        //THEN CLICK ON THE SUBMIT BUTTON
        System.out.println("permission_allow_button is found on page");
        driver.findElement(By.id("com.android.permissioncontroller:id/permission_allow_button")).click();
    }else{
        //DO SOMETHING ELSE AS SUBMIT BUTTON IS NOT THERE
        System.out.println("permission_allow_button not found on page");
    }
    
    //Clicking on Allow button of run in background pop up
    //driver.findElement(By.id("android:id/button1")).click();
    if(!driver.findElements(By.id ("android:id/button1")).isEmpty()){
        //THEN CLICK ON THE SUBMIT BUTTON
        System.out.println("button1 is found on page");
        driver.findElement(By.id("android:id/button1")).click();
    }else{
        //DO SOMETHING ELSE AS SUBMIT BUTTON IS NOT THERE
        System.out.println("button1 not found on page");
    }
    
    
    driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
    Thread.sleep(5000);
    
    System.out.println("CRMNext automation Before Skip..");
    //Clicking on Skip button
    driver.findElement(By.id("com.crmnextmobile.crmnextofflineplay:id/skip")).click();
    
    System.out.println("CRMNext automation after Skip..");
    driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
    
    Thread.sleep(10000);
    
    driver.findElement(By.id("com.crmnextmobile.crmnextofflineplay:id/relative_layout_continue")).click();
    Thread.sleep(2000);
    
    
    
    } catch (Exception exp) {
        // TODO: handle exception
        System.out.println("Cause is :"+exp.getCause());
        System.out.println("Message is :"+exp.getMessage());
        exp.printStackTrace();
    }

}

@Test
public void sample() {
    System.out.println("Sample run");
}


@AfterClass
public void tearDown()
{

    driver.close();
    driver.quit();
    
}

//org.openqa.selenium.UnsupportedCommandException: 找不到请求的资源,或者使用映射资源不支持的HTTP方法接收到请求

由于这个原因,所有测试都失败了。

4

1 回答 1

2

司机.close()

driver.close() 命令用于关闭当前具有焦点的浏览器窗口。如果只打开一个浏览器,则调用 driver.close() 会退出整个浏览器会话。

可用性

在处理多个浏览器选项卡或窗口时使用 driver.close(),例如单击打开另一个选项卡的链接时。在这种情况下,在新选项卡中执行所需操作后,要关闭选项卡,请调用 driver.close() 方法。

driver.quit()

driver.quit() 用于退出整个浏览器会话以及所有相关的浏览器窗口、选项卡和弹出窗口。

可用性

当不再希望与驱动程序对象以及任何关联的窗口、选项卡或弹出窗口进行交互时,请使用 driver.quit()。通常,它是自动化脚本的最后一条语句。在 @AfterClass 方法中调用 driver.quit() 以在整个套件结束时将其关闭。

Use following code in @AfterClass

@AfterClass
public void tearDown()
{

   if (driver != null)
      driver.Quit();
    
}
    
于 2022-01-16T05:52:55.623 回答