Хорошо, так что прежде всего избавьтесь от этих Thread.sleep()
, используйте плавное ожидание с временем опроса, предпочтительно как функцию для определения местоположения элементов:
private WebElement waitFor(By locator) {
int timeout = 10;
FluentWait<WebDriver> wait = new FluentWait<>(driver)
.pollingEvery(Duration.ofMillis(200))
.withTimeout(Duration.ofSeconds(timeout))
.ignoring(NoSuchElementException.class);
return wait.until((driver) -> driver.findElement(locator));
}
Затем вы можете нажимать кнопки и загружатьфайл, подобный следующему:
waitFor(By.cssSelector("button.view-products")).click();
waitFor(By.cssSelector("a.get-started")).click();
waitFor(By.cssSelector("a.get-started")).click();
waitFor(By.cssSelector("input.file-upload")).sendKeys("path_to_my_file");
Обратите внимание, я использую элемент input
для загрузки файла - я не нажимаю на ссылку a
, так как вам не нужно это делать. Просто отправьте путь непосредственно к элементу ввода.