Почему мой селеновый вебдрайвер открывает пустые окна «данных»; - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь настроить мой веб-драйвер так, чтобы он мог выполнять тесты параллельно с листом xml, это так и происходит, но иногда я обнаруживаю, что он открывает пустые хромированные окна «data»

Я исследовал другие вопросы, и, похоже, все ответы говорят о том, что веб-драйвер должен быть новым threadlocal<RemoteWebDriver>, что я уже делаю.

Это файл WebDriverSetup.java, который я использую:

public class WebDriverSetup {

    private static ThreadLocal<RemoteWebDriver> threadDriver = null;

    public WebDriver driver(){
        return threadDriver.get();
    }

    @BeforeMethod
    public void setUp() throws MalformedURLException {
        //Set up the path to the chromedriver so that the user will not have problems if they don't have the system path variable set up.
        System.setProperty("webdriver.chrome.driver", TestExecutor.projectDirectory + "/chromedriver.exe");

        //Set the hub URL
        String seleniumUrl = "http://" + TestExecutor.hubUrl + "/wd/hub";

        //Turn off logging because as of selenium-standalone-server-3.0.1, there
        //is an "INFO" message that appears in console that could be mistaken for
        //an error message.
        Logger.getLogger("org.openqa.selenium.remote").setLevel(Level.OFF);

        //threadDriver needs to be on its own local thread
        threadDriver = new ThreadLocal<RemoteWebDriver>();

        //Set chromeoptions so they open headless on the VM, but the VM imagines the
        //tests as if chrome was running full screen on a desktop session.
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--headless");
        options.addArguments("--window-size=1920,1080");

        //Apply the options to the chromedriver session.
        URL seleniumHubURL = new URL(seleniumUrl);
        threadDriver.set(new RemoteWebDriver(seleniumHubURL, options));
    }
}

и вот как я это называю из своего теста:

public class Demo_1_Filter_Users_By_Firstname extends TestBase.ClassGlobals 
{

    private WebDriverSetup webDriverSetup;
    private EventFiringWebDriver driver;
    private File logFile;

    @Test
    public void main(){
        //The main method
        driver.get("web_application_url");
    }

    @BeforeMethod
    public void testSetup() throws IOException {
        //Setup the webdriver
        webDriverSetup = new WebDriverSetup();
        driver = new EventFiringWebDriver( webDriverSetup.driver() );

        //Set up an eventhandler on the event so that all the logging functions work
        EventHandler handler = new EventHandler();
        driver.register( handler );

        //Setup the logfile
        logFile = commonMethods.newLogFile();

        //Log
        commonMethods.log(logFile, "------TEST STARTED------");
    }

    @AfterMethod
    public void testClosure(){
        //Close webdriver session, log test done etc
    }

}

Ошибка, с которой я сталкиваюсь, не возникает каждый раз, и я не понимаю, почему окно висит на data;, хотя первая строка моего основного метода заключается в создании нового сеанса веб-драйвера, а затем используя этот сеанс, откройте веб-приложение через driver.get()

Я использую chromedriver версии 2.41

...