示例#1
0
def driver(request, browser_config, webdriver_module):
    # type: (SubRequest, dict, webdriver) -> typing.Generator[dict]
    test_name = request.node.name
    test_page_url = request.node.get_closest_marker("test_page_url")
    test_page_url = test_page_url.args[-1] if test_page_url else None

    force_remote = bool(os.getenv("TEST_REMOTE", False))
    if "appiumVersion" in browser_config:
        force_remote = True

    if force_remote:
        sauce_url = "https://{username}:{password}@ondemand.saucelabs.com:443/wd/hub".format(
            username=os.getenv("SAUCE_USERNAME", None),
            password=os.getenv("SAUCE_ACCESS_KEY", None),
        )
        selenium_url = os.getenv("SELENIUM_SERVER_URL", sauce_url)
        logger.debug("SELENIUM_URL={}".format(selenium_url))

        desired_caps = browser_config.copy()
        desired_caps["build"] = os.getenv("BUILD_TAG", None)
        desired_caps["tunnelIdentifier"] = os.getenv("TUNNEL_IDENTIFIER", None)
        desired_caps["name"] = test_name

        browser = webdriver_module.Remote(command_executor=selenium_url,
                                          desired_capabilities=desired_caps)
    else:
        # Use local browser. Use ENV variable for driver binary or install if no one.
        driver_manager_class, webdriver_class, options = BROWSERS_WEBDRIVERS.get(
            browser_config["browserName"])
        if options:
            headless = strtobool(os.getenv("TEST_BROWSER_HEADLESS", "True"))
            options = options()
            options.headless = bool(headless)
        if driver_manager_class:
            browser = webdriver_class(
                executable_path=driver_manager_class().install(),
                options=options)
        else:
            browser = webdriver_class()

    if browser is None:
        raise WebDriverException("Never created!")

    if test_page_url:
        browser.get(test_page_url)
        logger.info("navigation to URL: {}".format(test_page_url))

    yield browser

    # report results
    try:
        browser.execute_script("sauce:job-result=%s" %
                               str(not request.node.rep_call.failed).lower())
    except WebDriverException:
        # we can ignore the exceptions of WebDriverException type -> We're done with tests.
        logger.info(
            "Warning: The driver failed to quit properly. Check test and server side logs."
        )
    finally:
        browser.quit()
def test_classic_runner_raise_exception(driver):
    classic_runner = ClassicRunner()
    eyes = Eyes(classic_runner)
    eyes.open(
        driver,
        "Applitools Eyes Java SDK",
        "Classic Runner Test",
        dict(width=1200, height=800),
    )
    eyes.check("Step 1", Target.window())
    logger.info(str(eyes.close(False)))
    with pytest.raises(Exception):
        classic_runner.get_all_test_results()