Захват текста с веб-страницы с помощью селена
Я пытаюсь получить фрагмент текста с веб-сайта, который постоянно меняется. Это выглядит как:
Код заказа: XXIO-123344-3456
Префикс постоянен, но числа всегда будут меняться. Я хочу захватить этот номер и сохранить его. я пытался storeTextPresent
с регулярным выражением regexp:Email.*@.*com
, Это возвращает мне Истину, но не возвращает мне значение. Конечно storeTextPresent
должен возвращать только True или False. Итак, как я могу получить точное значение?
Вот снимок экрана части веб-страницы. Не могу показать всю страницу, извините.
Так есть идеи, ребята?
Я экспортирую эти тесты после записи в Python Remote Control. Так что специфичный для Python код более приветствуется.
4 ответа
assertText
команда с регулярным выражением regexp:^XXIO-.+
решит проблему. Попробуйте это в сочетании с идентификатором элемента, который необходимо проверить.
Спасибо за идею, но я не смог найти локатор для текста. Это код, который я захватил с помощью Firebug.
<div class="chkOutBox">
<h2 id="tnq" class="marb10">Order Details</h2>
<div class="ordRevAddressArea">
<div class="ordRevDelSlotArea">
<div class="clear"></div>
<div class="bFont">Order ID: BBO-72262-171012</div>
<div class="scartPgHdr">
<h3 class="catHdr">Fruits & Vegetables</h3>
Здесь мы фиксируем идентификационный номер (строка 6)...... Может быть, кто-то подскажет мне, как выяснить возможный локатор для этого из приведенного выше кода.... Кстати, я решил свою проблему, захватив URL-адрес страницы с идентификатором заказа. Я использовал регулярное выражение для отделения идентификатора заказа и вот оно....... Это только временное решение.......
Код Python.
def get_order_id(driver):
""" Gets the order id, given an Order Details page. """
try:
bFonts = driver.find_element_by_class_name("bFont")
for element in bFonts:
if "Order ID" in element.text:
return element.text.split()[-1]
except NoSuchElementException:
return None
Это предполагает, что имя класса, bFont
никогда не меняется Если это так, вы можете переписать его для поиска по div
тег. Также предполагается, что будет найден "Идентификатор заказа".
Просто посмотрел в руководстве. Я нашел команду storeText в разделе " Команды магазина и переменные Selenium". Я предполагаю, что если вы используете storeText вместо storeTextPresent.
Кроме того, вместо того, чтобы пытаться найти текст с помощью шаблона регулярных выражений, вы можете попробовать использовать локатор xpath, DOM или CSS.