【问题标题】:Capture a text from webpage using selenium使用 selenium 从网页中捕获文本
【发布时间】:2012-10-07 09:39:52
【问题描述】:

我正在尝试从不断变化的网站中捕获一段文本。 它看起来像:

订单编号:XXIO-123344-3456

前缀是不变的,但数字总是会改变。我想捕获这个号码并存储它。我用正则表达式模式regexp:Email.*@.*com 尝试了storeTextPresent。它确实返回了一个 True 但它没有返回我的值。当然storeTextPresent 应该只返回 TrueFalse。那么现在我怎样才能捕捉到确切的价值呢?

这是网页部分的屏幕截图。无法显示整个页面,很抱歉。

大家有什么想法吗?

我在录制到 python 遥控器后导出这些测试。所以python特定的代码更受欢迎。

【问题讨论】:

  • 你能显示你实际尝试过但没有工作的代码吗?
  • 我没有代码.....假设你访问了一个网页。您启动 selenium IDE。开始录音。您右键单击所需的页面文本并选择 "storeTextPresent" 。这就是我想要做的。好的,只需尝试在此页面上捕获“查看了 8 次”的文本。你可以在右上角看到它。你想捕捉“8次”。那你是怎么做到的呢?

标签: python selenium text-capture


【解决方案1】:

刚刚看了一下手册。我在Store Commands and Selenium Variables 下找到了storeText 命令。我的猜测是,如果您使用 storeText 而不是 storeTextPresent。

此外,您可以尝试使用xpathDOMCSS 定位器,而不是尝试使用正则表达式模式查找文本。

【讨论】:

    【解决方案2】:

    assertText 命令与正则表达式 regexp:^XXIO-.+ 将解决该问题。将此与您需要验证的元素 ID 结合使用。

    【讨论】:

    • 这不会给出想要的结果,因为它会返回一个布尔值,而不是 arindam 正在寻找的实际文本。
    【解决方案3】:

    感谢您的想法,但我找不到文本的定位器。 这是我使用 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:&nbsp; BBO-72262-171012</div>
    <div class="scartPgHdr">
    <h3 class="catHdr">Fruits &amp; Vegetables</h3>
    

    这里我们正在捕获 id 号(第 6 行)......也许有人可以告诉我如何从上面的代码中找出一个可能的定位器 ....顺便说一句,我通过捕获具有订单 ID 的页面的 URL 解决了我的问题。我使用正则表达式来分离订单 ID,仅此而已.......这只是一个临时解决方案。 ......

    【讨论】:

    • 您甚至可以使用 CSS 定位器。很难说什么是最好的,因为 html 标记并没有传达太多的语义含义。 css 类看起来像是基于视觉风格而不是语义。你可以试试#tnq .bFont。最好添加使用语义类名称。另外,我是否建议您不要添加额外的信息作为答案,而应该编辑您的原始问题并在此处添加此信息。
    【解决方案4】:

    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 标记。它还假设将找到“订单 ID”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      • 2018-02-24
      • 2020-02-15
      • 1970-01-01
      相关资源
      最近更新 更多