通过同一行中的相应值检索网站 table 中的文本 - selenium 和 python
retrive text in a website table by corresponding value in the same row- selenium and python
如果我问错了这个问题,请原谅我。我是 selenium/web-related 编程新手,对网站 structure/query/etc 绝对不是很了解。
我正在使用 selenium 做一些事情,几天后我(好吧,主要是在这个网站上一些可爱的人的帮助下)设法让我的脚本工作。该脚本涉及提交订单,现在我需要做的最后一件事是获取与该订单关联的号码。
在我当前脚本的末尾,我被重定向到显示订单网站(您必须登录才能看到它,但我在下面添加了一个屏幕截图)我想知道订单号我刚刚提交的订单。每个订单都将与一个唯一的名称相关联(即山猫、crystal 等-现在看起来不是唯一的,因为我正在测试但会)。我这样做是为了在显示订单页面中反映名称(在提交步骤中没有名称的位置,但我只是将其添加为注释),现在我想使用该名称来获取订单
ID(在 OrderID 列下)。
所以我的问题是,如果我唯一知道的是与订单关联的名称(即 'harold')?
table 的页面源代码和屏幕截图在底部。
提前致谢!
编辑:脚本将重复运行,根据客户的要求创建订单。所以我无法根据页面上的位置找到我的答案,因为订单将不断添加。
<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>
使用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
这里我们正在检查 tr
中最后一个 td
中的文本,如果匹配,我们将从第一个 td
中获取 link
里面一样tr
。希望这是清楚的。
如果我问错了这个问题,请原谅我。我是 selenium/web-related 编程新手,对网站 structure/query/etc 绝对不是很了解。
我正在使用 selenium 做一些事情,几天后我(好吧,主要是在这个网站上一些可爱的人的帮助下)设法让我的脚本工作。该脚本涉及提交订单,现在我需要做的最后一件事是获取与该订单关联的号码。
在我当前脚本的末尾,我被重定向到显示订单网站(您必须登录才能看到它,但我在下面添加了一个屏幕截图)我想知道订单号我刚刚提交的订单。每个订单都将与一个唯一的名称相关联(即山猫、crystal 等-现在看起来不是唯一的,因为我正在测试但会)。我这样做是为了在显示订单页面中反映名称(在提交步骤中没有名称的位置,但我只是将其添加为注释),现在我想使用该名称来获取订单 ID(在 OrderID 列下)。
所以我的问题是,如果我唯一知道的是与订单关联的名称(即 'harold')?
table 的页面源代码和屏幕截图在底部。
提前致谢!
编辑:脚本将重复运行,根据客户的要求创建订单。所以我无法根据页面上的位置找到我的答案,因为订单将不断添加。
<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>
使用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
这里我们正在检查 tr
中最后一个 td
中的文本,如果匹配,我们将从第一个 td
中获取 link
里面一样tr
。希望这是清楚的。