通过相同行 - selenium和python中的相应值检索网站表中的文本

时间:2015-01-08 21:33:18

标签: python selenium selenium-webdriver

如果我问这个问题错了,请原谅我。我是selenium / web相关编程的新手,绝对不能很好地掌握网站结构/查询等。

我正在使用硒来做一些事情,过了几天我(好吧,主要是在这个网站上一些可爱的人的帮助下)设法使我的脚本工作。该脚本涉及提交订单,现在我需要做的最后一件事是获取与该订单相关联的编号。

在我当前脚本的最后,我被重定向到显示订单表单网站(您必须登录才能看到它,但我在下面添加了截图)并且我想知道订单的订单号我刚刚提交。每个订单都将与一个唯一的名称相关联(即山猫,水晶等 - 现在看起来并不独特,因为我正在测试,但将会是)。我做了这个名称将反映在节目顺序页面中(在提交步骤中没有名称的地方,但我只是将其添加为注释),现在我想使用该名称来获取订单 ID(在OrderID列下)。

所以我的问题是,我怎么能在'OrderID'列下找到字符串(即'recover.dummy@gmail.com-01082015-151052'),如果我知道的唯一的东西是与之关联的名称订单(即'harold')?

表格和屏幕截图的页面源位于底部。

提前致谢!

编辑:脚本将重复运行,按客户要求创建订单。因此,我无法根据页面上的位置找到我的答案,因为将不断添加订单。

show order page

<div class='boxbody'>

<table>
    <tr class="header_row">
        <th class='header_row noborder orderid'>Order ID</th>
        <th class='header_row noborder pordered'>Products Ordered</th>
        <th class='header_row noborder pcomplete'>Products Complete</th>
        <th class='header_row noborder pstatus'>Status</th>
        <th class='header_row noborder pnote'>Note</th>
    </tr>


    <tr class="oddrow">
    <td class="oddrow"><a href="/ordering/status/recover.dummy%40gmail.com-01082015-151052/">recover.dummy@gmail.com-01082015-151052</a></td>
    <td class="oddrow" id='26910_total_ordered'></td>
    <td class="oddrow" id='26910_finished'></td>
    <td class="oddrow">Ordered</td>
    <td class="oddrow">harold</td>
    </tr> 

    <tr class="evenrow">
    <td class="evenrow"><a href="/ordering/status/recover.dummy%40gmail.com-01082015-145743/">recover.dummy@gmail.com-01082015-145743</a></td>
    <td class="evenrow" id='26907_total_ordered'></td>
    <td class="evenrow" id='26907_finished'></td>
    <td class="evenrow">Complete</td>
    <td class="evenrow">bobcat</td>
    </tr> 

    <tr class="oddrow">
    <td class="oddrow"><a href="/ordering/status/recover.dummy%40gmail.com-01082015-145449/">recover.dummy@gmail.com-01082015-145449</a></td>
    <td class="oddrow" id='26906_total_ordered'></td>
    <td class="oddrow" id='26906_finished'></td>
    <td class="oddrow">Complete</td>
    <td class="oddrow"></td>
    </tr> 

    <tr class="evenrow">
    <td class="evenrow"><a href="/ordering/status/recover.dummy%40gmail.com-01082015-145034/">recover.dummy@gmail.com-01082015-145034</a></td>
    <td class="evenrow" id='26905_total_ordered'></td>
    <td class="evenrow" id='26905_finished'></td>
    <td class="evenrow">Complete</td>
    <td class="evenrow"></td>
    </tr> 

    <tr class="oddrow">
    <td class="oddrow"><a href="/ordering/status/recover.dummy%40gmail.com-01082015-143913/">recover.dummy@gmail.com-01082015-143913</a></td>
    <td class="oddrow" id='26902_total_ordered'></td>
    <td class="oddrow" id='26902_finished'></td>
    <td class="oddrow">Complete</td>
    <td class="oddrow">bobcat</td>
    </tr> 


</table>

</div>

1 个答案:

答案 0 :(得分:1)

使用find_element_by_xpath()获取xpath:

name = 'harold'
order_id = driver.find_element_by_xpath('//div[@class="boxbody"]//table//tr[td[last()][text()="%s"]]/td[1]/a' % name)
print order_id.text

我们正在检查td内的最后tr内的文字,如果匹配,我们会从第一个link内获取td相同tr。希望这很清楚。