如何从selenium pytest中的标签中查找文本

问题描述 投票:0回答:1

我需要使用 Selenium、python、pytest UI 从元素中的文本中捕获付款 ID。文本格式为“付款 3022594”。

我正在尝试这样的事情。

PAYMENT_ID_TEXT_XPATH = "//div[@class='BottomLayoutHeaderWrapper']//h5[text()='Payment']"

paymentId = self.get_element(self.PAYMENT_ID_TEXT_XPATH, page)
if paymentId:
    paymentId = paymentId.strip()
paymentIdValue = paymentId[8:]

这并不总是有效,因为有时 paymentId 为 null 会导致 TypeError,

TypeError: 'NoneType' object is not subscriptable

在我提取 paymentIdValue 的行中。

有没有更好的方法从文本中捕获付款ID? 付款 ID 将始终附加到 UI 中的“付款”文本中。

python selenium-webdriver pytest
1个回答
0
投票

我能看到这项工作的唯一方法是进行以下更改,

  1. 鉴于您提供的 HTML,
    h5[text()='Payment']
    永远不会工作,因为它期望 H5 中的全文为“付款”,而您已经声明它应该是“付款 3022594”。您需要将其更改为
    contains()
    以便可以找到它。
  2. if paymentId:
    将不起作用,因为如果未找到该元素,前一行
    self.get_element()
    将抛出异常。
  3. 要从元素中获取文本,您需要使用
    element.text

更新代码

PAYMENT_ID_TEXT_XPATH = "//div[@class='BottomLayoutHeaderWrapper']//h5[contains(text(),'Payment')]"

paymentId = self.get_element(self.PAYMENT_ID_TEXT_XPATH, page).text.strip()[8:]
© www.soinside.com 2019 - 2024. All rights reserved.