首页 > 解决方案 > 从在线购物网站复制订单号

问题描述

我正在编写一个用于在购物网站上下订单的自动化脚本。最后,我需要复制订单号。

<span class="OrderLinxTx">order No.</span>

在此处使用类别标识订单号。问题是相同的类名与多个元素(例如地址、产品名称等)共享,并与它们自己的类复合。

我正在使用 find_elements_by_class_name 来获取所有元素。订单号每次都是列表中的第一个元素。但是它不是 100% 的工作,有时它会复制地址或产品名称而不是订单号。我已经尝试过 time.sleep 来加载所有元素,但没有用。

如何每次只复制订单号?我知道我可以使用 XPath,但我不想这样做,因为它们可以更改元素的位置。Edit1:我正在使用带有硒的python。Edit2:span 元素的 HTML 更多 html。有多个具有类名的 span 元素。

<span tabindex="0"><br>Order#
<span class="OneLinkNoTx"> LC2784988018 </span> is complete.</span>
<p class="address OneLinkNoTx " tabindex="0">
  <span class="ttl OneLinkNoTx title" tabindex="-1">
	<a href="https://www.lastcall.com/product.jsp?itemId=prod53900168">
	Area StarsSummer Love Tote Bag</a>
</span>
  <div class="code OneLinkNoTx tabfocus itemTextCompliant" tabindex="0">Item: LCS19_V48YZ</div>
  <span class="sku-color OneLinkNoTx tabfocus" tabindex="0">Color: WHITE</span>
  <span id="qtyCI_ci1221185906" class="qty OneLinkNoTx tabfocus" qty="1" tabindex="0">Qty: 1</span>
  <span class="adornment OneLinkNoTx" tabindex="0">
<span class="finalPrice OneLinkNoTx" tabindex="0"> 
<span class="finalPrice OneLinkNoTx" tabindex="0">Price $40.00 </span>
  <p class="address OneLinkNoTx " tabindex="0">
    <span tabindex="0">Address</span> Dallas, TX 75001
    </span>
  </p>

标签: seleniumselenium-webdriver

解决方案


获取值LC2784988018使用 WebDriverWait 并等待元素element_to_be_clickable并使用以下 xpath 获取文本。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get('Url here')
print(WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//span[contains(.,'Order')]/span[@class='OneLinkNoTx']"))).text.strip())

推荐阅读