Browserstack 上的 Web 应用程序自动化

问题描述 投票:0回答:1

Browserstack 上的 Web 应用程序自动化 - 当我们尝试使用硬编码 URL 运行 WebApplication 脚本时 > 它在设备 Iphone 14 最新浏览器上成功运行,没有任何错误,当我们尝试从 configProperties 读取 URL 时也是如此 - 它没有选择基于标签url 或选择功能文件中定义的场景。注意-这不是桌面上的问题

your text

带有硬编码 Url 的驱动程序代码

public static RemoteWebDriver getBrowserStackDriver(Scenario scenario) throws MalformedURLException {
    DesiredCapabilities caps = new DesiredCapabilities();
    //Map<String,Object> bsCapabilities = new HashMap<>();
    Map<String,String> bsCapabilities = new HashMap<>();
    caps.setCapability("browserName", "safari");
    caps.setCapability("device", "iPhone 14");
    caps.setCapability("realMobile", "true");
    caps.setCapability("os_version", "16");
    bsCapabilities.put("browserstack.idleTimeout", "90");
    bsCapabilities.put("browserstack.selenium_version", BasePage.setValue("bs_selenium_version"));
    bsCapabilities.put("browserstack.use_w3c", BasePage.setValue("browserstack_use_w3c"));
    caps.setCapability("name", scenario.getName());
    bsCapabilities.forEach(caps::setCapability);
    //bsCapabilities.put("device", BasePage.readConfig("chrome_emulation_device"));
    //bsCapabilities.put("device", BasePage.readConfig("environment"));
    WebDriver driver = new RemoteWebDriver(new URL(Objects.requireNonNull(setURL())), caps);
    WebDriverWait wait = new WebDriverWait(driver, 10);
    
    try {
        driver.get("https://www.flexa.nl");
        WebElement cookiepopUp=wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@id='onetrust-accept-btn-handler']")));
        cookiepopUp.click();
    } catch (Exception e) {

        logger.fatal("Browserstack driver is not initialized");
        Assert.fail("ERROR: Browserstack driver is not initialized: " + e);
    }
    //quit the driver
    //driver.quit();
    return new RemoteWebDriver(new URL(Objects.requireNonNull(setURL())), caps);

    //return null;
}

BS 的 setURL() 中的代码

private static String setURL() {
    String url = "";
    if (endpoint.startsWith("saucelabs"))
        url = "http://" + BasePage.setValue("sauce_username") + ":" + BasePage.setValue("sauce_accesskey")
                + "@ondemand.eu-central-1.saucelabs.com/wd/hub";
    else if (endpoint.startsWith("browserstack"))
        url = "https://" + BasePage.setValue("browserstack_username") + ":" + BasePage.setValue(
                "browserstack_accesskey") + "@hub-cloud.browserstack.com/wd/hub";
    return url;
}

功能文件中的场景

@COATINGS_AUTOMOTIVE @Mobile_Smoke 特征:Atomotive_EN

@Search
  Scenario: Verify search bar open-close
    Given The user navigates to homepage
    Then Homepage should be displayed
    When User clicks open search bar
    Then Search bar should be visible
    When User clicks close search bar
    Then Search bar should be invisible





@Search
  Scenario: Verify search suggestion container for Market segment
    Given The user navigates to homepage
   Then Homepage should be displayed
    When User clicks open search bar
    Then Search bar should be visible
    When User fills search input with Metal
    Then Suggestion container overlay should be visible for EWT-918

它必须通过从功能文件中选择场景和从 configProperties 中选择 Url 来自动运行脚本

Note-Automation 脚本在桌面浏览器堆栈上运行没有任何问题,但同样不适用于移动设备(它不是从功能文件或 ConfigProperties 中选择 url 或场景)如果我对 URL 进行硬编码则不是问题

还添加了在 windows 10 和移动模拟器上的 chrome 浏览器上运行的代码

public static RemoteWebDriver getBrowserStackDriver(Scenario scenario) {
        try {
            setBrowserResolution();
            //DesiredCapabilities caps = new DesiredCapabilities();
            MutableCapabilities caps = new MutableCapabilities();
            Map<String, String> bsCapabilities = new HashMap<>();
            bsCapabilities.put("os", BasePage.setValue("bs_os"));
            bsCapabilities.put("os_version", BasePage.setValue("bs_os_version"));
            bsCapabilities.put("resolution", BasePage.setValue("bs_resolution"));
            bsCapabilities.put("browser", BasePage.setValue("bs_browser"));
            bsCapabilities.put("browser_version", BasePage.setValue("bs_browser_version"));
            bsCapabilities.put("browserstack.selenium_version", BasePage.setValue("bs_selenium_version"));
            bsCapabilities.put("name", scenario.getName());
            bsCapabilities.put("browserstack.use_w3c", BasePage.setValue("browserstack_use_w3c"));
            bsCapabilities.put("project", BasePage.setValue("bs_project_name"));
            bsCapabilities.put("build", BasePage.setValue("cucumber.filter.tags") + "_" + LocalDate.now());
            bsCapabilities.put("browserstack.idleTimeout", "90");
            if (browser.equalsIgnoreCase("chrome")){
                ChromeOptions withExtension = chromeOptions();
                caps.setCapability(ChromeOptions.CAPABILITY, withExtension);
            }
            if (endpoint.endsWith("mobile")) {
                ChromeOptions chromeOptions = new ChromeOptions();
                Map<String, Object> mobileEmulation = new HashMap<>();
                mobileEmulation.put("deviceName", BasePage.readConfig("chrome_emulation_device"));
                chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);
                caps.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
            }
            bsCapabilities.forEach(caps::setCapability);
            return new RemoteWebDriver(new URL(Objects.requireNonNull(setURL())), caps);
        } catch (Exception e) {
            logger.fatal("Browserstack driver is not initialized");
            Assert.fail("ERROR: Browserstack driver is not initialized: " + e);
        }
        logger.fatal("Browserstack driver is NULL : ");
        return null;
    }

和驱动程序-Chrome的ChromeOption代码

private static ChromeOptions chromeOptions() {
        WebDriverManager.chromedriver().setup();
        ChromeOptions chromeOptions = new ChromeOptions();
        if (endpoint.endsWith("mobile")) {
            Map<String, Object> mobileEmulation = new HashMap<>();
            mobileEmulation.put("deviceName", BasePage.readConfig("chrome_emulation_device"));
            chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);
        }
        chromeOptions.setHeadless(Boolean.parseBoolean(BasePage.readConfig("headless")));
        chromeOptions.addExtensions(new File("src/test/resources/extension/extension.crx"));
        chromeOptions.setHeadless(Boolean.parseBoolean(BasePage.readConfig("headless")));
        chromeOptions.addArguments("--remote-allow-origins=*", "ignore-certificate-errors");
        return chromeOptions;
    }
selenium-webdriver cloud bdd browserstack selenium-remotedriver
1个回答
0
投票

您能否通过我们的“联系我们”页面向 BrowserStack 提出支持请求?

© www.soinside.com 2019 - 2024. All rights reserved.