Selenium Как дождаться загрузки страницыJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Selenium Как дождаться загрузки страницы

Сообщение Anonymous »

У нас есть тикет-система, и я хочу автоматизировать некоторые ее части. Я реализовал решение, но оно не работает должным образом. Мне нужно дождаться значений выпадающих меню, и вы увидите, как страница обновится сама. Это проблематично, поскольку страница обновляется 3–4 раза, что приводит к сбою кода.

Исключение в потоке «main» org.openqa.selenium.TimeoutException: Ожидаемое условие не выполнено: ожидание, пока элемент станет доступен для клика: By.xpath: //*[@id="select2-SubReason-results"]/li[15] (проба в течение 10 секунд с интервалом 500 миллисекунд)

Параметры второго раскрывающегося меню, которые вы видите в видео, извлекаются с сервера посредством запроса POST после того, как выбор сделан из первого раскрывающегося меню. Selenium пытается открыть второе раскрывающееся меню до загрузки данных, что приводит к ожиданию строки WebElement optionWebElement = waitElement.until(ExpectedConditions.elementToBeClickable(By.xpath(optionToSelect))); и приводит к ошибка из-за пустого меню. Мне нужно открыть второе выпадающее меню только после загрузки данных или несколько раз пытаться открыть и закрыть меню в цикле, пока данные не загрузятся.
Есть видео (я я управляю страницей в видео, также размытым в целях конфиденциальности): https://streamable.com/p47d93
import java.time.Duration;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import Enums.*;

class Main {
private static WebDriver chromeDriver;
public static void main(String[] args) throws Exception {
System.setProperty("webdriver.chrome.driver", "C:/Users//Desktop/Selenium/ChromeDriver-win64/ChromeDriver.exe");

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setBinary("C:/Users//Desktop/Selenium/Chrome-win64/Chrome.exe");
chromeOptions.addArguments("user-data-dir=C:/Users//AppData/Local/Google/Chrome for Testing/User Data");

chromeDriver = new ChromeDriver(chromeOptions);
chromeDriver.get("Removed for privacy");

selectItem(Elements.Application.xPath, Applications.Computer.xPath, 0);
selectItem(Elements.SubReason.xPath, SubReasons.Printer.xPath, 1);
}

public static void sendKeys(String textareaElement, String keysToSend) {
WebDriverWait waitElement = new WebDriverWait(chromeDriver, Duration.ofSeconds(3));
waitElement.until(ExpectedConditions.elementToBeClickable(By.xpath(textareaElement)));

WebElement webElement = chromeDriver.findElement(By.xpath(textareaElement));
webElement.sendKeys(keysToSend);
}

public static void selectItem(String selectElement, String optionToSelect, int isLoadingExpected) throws Exception {
WebDriverWait waitElement = new WebDriverWait(chromeDriver, Duration.ofSeconds(3));

if (isLoadingExpected == 1) {
waitElement.until(ExpectedConditions.visibilityOfElementLocated(By.className("loading")));
waitElement.until(ExpectedConditions.invisibilityOfElementLocated(By.className("loading")));
}

WebElement selectWebElement = waitElement.until(ExpectedConditions.elementToBeClickable(By.xpath(selectElement)));
selectWebElement.click();

WebElement optionWebElement = waitElement.until(ExpectedConditions.elementToBeClickable(By.xpath(optionToSelect)));
optionWebElement.click();
}
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... ge-loading
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как дождаться полной загрузки страницы с помощью JavaScript в Selenium
    Anonymous » » в форуме JAVA
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Selenium Как дождаться загрузки страницы
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Selenium Как дождаться загрузки страницы
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Selenium Как дождаться загрузки страницы
    Anonymous » » в форуме JAVA
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Как дождаться полной загрузки страницы с помощью JavaScript в Selenium
    Anonymous » » в форуме JAVA
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»