【问题标题】:selenium.UnsupportedCommandException: the requested resource could not be found, or a requestselenium.UnsupportedCommandException:找不到请求的资源,或者请求
【发布时间】:2022-01-16 05:17:29
【问题描述】:

遇到异常 配置失败:@AfterClass 拆解 "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方法接收到请求

所有测试都因此而失败。

【问题讨论】:

    标签: selenium exception configuration teardown appium-java


    【解决方案1】:

    driver.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();
        
    }
        
    

    【讨论】:

      猜你喜欢
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      • 2021-05-10
      • 2021-07-08
      • 2017-01-07
      • 2015-10-11
      相关资源
      最近更新 更多