Nano Hash - криптовалюты, майнинг, программирование

Как получить содержимое элемента, используя явное ожидание вместо сна (), используя Selenium и Java

Я пытаюсь получить содержимое элемента. Я реализовал явное ожидание 20 секунд перед заявлением о получении контента. Но я не могу получить содержимое. Я могу получить содержимое элемента, если использую sleep() в течение 2 секунд. Код, который я пробовал:

WebDriverWait wait1 = new WebDriverWait(driver,20);
wait1.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("XPath")));
String value = driver.findElement(By.xpath("xpath")).getAttribute("text-content");
System.out.println("Value is : " + value);

Output - Value is : 

Код со сном():

WebDriverWait wait1 = new WebDriverWait(driver,20);
Thread.sleep(2000);
String value = driver.findElement(By.xpath("xpath")).getAttribute("text-content");
System.out.println("Value is : " + value);

Output - Value is : $0.00

Я не получаю значение, если я также использую неявное ожидание. Рекомендуется не использовать sleep(). Использование явного ожидания всегда является лучшей практикой. Почему я не получаю содержимое элемента, используя явное ожидание?


  • Попробуйте использовать присутсвиеэлементлокатед вместо видимостиофлементлокатед. 28.05.2019
  • Можете поделиться HTML-кодом? 28.05.2019
  • не работает с присутствияOfElementLocation. 28.05.2019

Ответы:


1

Соответствующий HTML помог бы нам лучше отладить проблему. Однако, поскольку желаемый текст содержит символ $, лучшим подходом будет вызвать WebDriverWait для ожидания проверки наличия данного текста в элементе< /em> и вы можете использовать одно из следующих решений:

  • textToBePresentInElementLocated:

    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.textToBePresentInElementLocated(By.xpath("xpath"), "$")).getAttribute("text-content"));
    
  • textToBePresentInElementValue:

    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.textToBePresentInElementValue(By.xpath("xpath"), "$")).getAttribute("text-content"));
    
28.05.2019
  • textToBePresentInElementLocation работал. textToBePresentInElementValue — нет. 28.05.2019

  • 2

    Какую ошибку вы получаете? Кажется, что элемент не загружается должным образом. Могут быть некоторые анимации, такие как закрытие всплывающего окна, загрузка таблицы и т. д. Обычно можно поставить сон, если вы знаете, сколько времени занимают такие виды анимации.

    Вы также можете попробовать fluentwait, но если есть анимация, вы все равно можете получить исключения, такие как драйвер, который не может щелкнуть элемент.

    Свободное ожидание:

    Wait<WebDriver> fluentWait = new FluentWait<>(driver)
        .withTimeout(Duration.ofSeconds(timeout))
        .pollingEvery(Duration.ofMillis(500))
        .ignoring(NoSuchElementException.class)
        .ignoring(StaleElementReferenceException.class);
    
    28.05.2019

    3

    Можете ли вы попробовать:

    Wait<WebDriver> wait = new FluentWait<WebDriver>((WebDriver) driver).withTimeout(20, TimeUnit.SECONDS).pollingEvery(1, TimeUnit.SECONDS);
    wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("XPath"))));
    String value = driver.findElement(By.xpath("xpath")).getAttribute("text-content");
    System.out.println("Value is : " + value);
    
    28.05.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование