使用selenium从网页捕获文本

时间:2012-10-17 07:18:59

标签: python selenium text-capture

我试图从一个不断变化的网站上捕捉一段文字。 它看起来像:

  

订单编号:XXIO-123344-3456

前缀是常量但数字总是会改变。我想捕获这个数字并存储它。我尝试使用正则表达式storeTextPresent regexp:Email.*@.*com。它确实给我一个 True ,但它没有给我返回值。当然storeTextPresent应该只返回 True False 。那么现在我如何捕获确切的值?

这是网页部分的屏幕截图。无法显示整个页面,对不起。

enter image description here

那么有什么想法吗?

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

4 个答案:

答案 0 :(得分:1)

带有正则表达式assertText

regexp:^XXIO-.+命令可以解决问题。请结合您需要验证的元素ID来尝试此操作。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

感谢您的想法,但我无法找到文本的定位器。 这是我使用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>

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

答案 3 :(得分:0)

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”。