@Maxwell012

Как достать текст с веб элемента (Selenium)?

Есть сайт --- onlinetribune.info/testi-do-seminaru-11-suspilno-p.... Если нажать на Начать тест --- Проверить --- Далее, то в коде странице будет отмечен правильный ответ. Суть моей программы в том, что бы она сначала проклацала все вопросы, потом выписала все вопросы и их правильные ответы в блокнот и после прошла тест заново нажимая на соответствующие правильные ответы. Проблема в том, что ответы и вопросы динамические и у меня не получается ссылаться на них статично, а динамично я не знаю как это делать (именно на текст вопроса не получается ссылаться). Та же проблема с кнопками этих ответов, они все одинаковые и как на них ссылаться я не знаю. Пробовал достать ответ так:
for item in browser.find_element(by=By.CLASS_NAME, value="wpProQuiz_questionListItem.wpProQuiz_answerCorrect"):
        print(item.text, file=open("Answers.txt", "w"))


Но это я нахожу не текст, а класс в котором лежит правильный ответ, на сам текст я не могу ссылаться потому что его параметры такие же как и у остальных ответов, различие только в параметре value, но я не знаю как его использовать что бы искать текст
  • Вопрос задан
  • 3023 просмотра
Решения вопроса 1
@ilyaQA
Quallity Assurance
Для получения текста вопроса можно использовать getText() метод Селениума.

Например в вашем случае:
WebElement questionElement = driver.findElement(By.xpath("//div[@class='wpProQuiz_question_text']//p"));
questionElement.getText();

Далее уже работаете с записью в файл, как вам удобно.

Для ответов есть параметр data-pos, который равен от 1 до 3 у элемента li.
Можно создать цикл для поиска текста каждого из вариантов ответа.
Сам текст находится аналогично предыдущему пункту, за исключением нового Xpath
Например в вашем случае:
WebElement questionAnswer = driver.findElement(By.xpath("//li[@class='wpProQuiz_questionListItem' and @data-pos='3']"));
questionAnswer.getText();


Соответственно вам нужно передавать в этот Xpath data-pos от 0 до 3, т.к. вариантов ответа на вопрос - 4.
Можно использовать конструктор для локатора и передавать в него нужный номер data-pos, соответственно так же в цикле.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы