Как получить текст из элемента div с помощью Selenium, Java?

Я ищу способ получить число «ВСЕГО УСТАНОВОК» из этих div элементов на FireBase и Appsflyer.

Как получить текст из элемента div с помощью Selenium, Java?

Я пытался использовать селектор элементов XPath или id, но они не сработали. Я предполагаю, что проблема связана с функцией getText() и Inner HTML.

Я не очень хорошо разбираюсь в разработке интерфейса, поэтому, пожалуйста, объясните, какой метод мне следует использовать. Вот html-код элемента. Как получить текст из элемента div с помощью Selenium, Java?

Вы хотите получить общее количество установок?

Sameer Arora 15.03.2019 09:12

Да, точно! и я пытался использовать также исполняемый файл JS, чтобы получить его, но не удалось

user8669088 15.03.2019 09:15

Спасибо. На самом деле я пробовал все методы, указанные в ссылке, но безрезультатно.

user8669088 15.03.2019 10:11

@Mariam10: можешь попробовать и дай мне знать.

KunduK 15.03.2019 10:13

@Mariam10 Пожалуйста, прочтите, почему снимок экрана HTML или кода или ошибки - плохая идея. Рассмотрите возможность обновления Вопроса с помощью форматированного текста на основе соответствующего HTML, пробного кода и трассировки стека ошибок.

undetected Selenium 15.03.2019 10:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
5
2 852
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете получить общее количество установок и текст, используя метод getText() для className: af-kpi-box-footer например:

WebElement totalInstallsElement = driver.findElement(By.className("af-kpi-box-footer"));
String totalInstallsText = totalInstallsElement.getText();

totalInstallsText строка даст вам текст Total Installs: 638

Обновленный ответ (с использованием xpath)

WebElement totalInstallsElement = driver.findElement(By.xpath("//h5[@class='af-kpi-box-footer']"));

Я пробовал, но безрезультатно, ошибка - Невозможно найти элемент:

user8669088 15.03.2019 09:22

Обновите мой ответ и используйте xpath, попробуйте xpath и дайте мне знать, если это поможет

Sameer Arora 15.03.2019 09:25

спасибо за ответ, но я пробовал и с xpath, и с селектором css, та же ошибка

user8669088 15.03.2019 09:26

Не могли бы вы проверить, присутствует ли какой-либо iframe в структуре html над элементом?

Sameer Arora 15.03.2019 09:27

Спасибо, я только что проверил, их нет, может быть проблема в том, что элемент div не кликабельный в Java?

user8669088 15.03.2019 09:33

Неважно, кликабельно оно или нет, потому что нам нужно просто извлечь из него текст. Не могли бы вы попробовать выполнить команду System.out.println(driver.findElement(By.className("af-kpi-b‌​ox-pieces-container"‌​)).getText()); и сказать мне, что вы сделали в результате?

Sameer Arora 15.03.2019 09:48

Спасибо. Результат - та же ошибка - нет такого элемента: Невозможно найти элемент:

user8669088 15.03.2019 10:08
Ответ принят как подходящий

Попробуйте получить значение innerHTML, если не можете получить текстовое значение. Попробуйте любой из вариантов. Посмотрите, работает ли это.

Варианты 1:

WebElement Element1 = driver.findElement(By.cssSelector("h5.af-kpi-box-footer"));
System.out.println(Element1.getAttribute("innerHTML"));

Варианты 2

WebElement element2=driver.findElement(By.cssSelector("h5.af-kpi-box-footer"));
JavascriptExecutor executor = (JavascriptExecutor) driver;
System.out.println(executor.executeScript("return arguments[0].innerHTML", element2));

Большое спасибо, на самом деле это почти работает, но проблема в селекторе CSS, который в моем случае указывает на левый элемент, который имеет ту же структуру, что и мой общий элемент установки. Пробовал копировать селектор, но в этом случае ничего не работает. Не могли бы вы объяснить мне, пожалуйста, как написать правильный локатор CSS, так как у меня нет знаний во Front-End

user8669088 15.03.2019 10:31

@Mariam10 @Mariam10: если есть имя класса, должно быть .classname или tag.classname

KunduK 15.03.2019 10:34

спасибо, я понял, но может ли один и тот же локатор css иметь 2 элемента?

user8669088 15.03.2019 10:36

Да может есть. для этого вам нужно использовать индекс для доступа к конкретному элементу

KunduK 15.03.2019 10:57

Другие вопросы по теме