selenium - 从在线购物网站复制订单号
问题描述
我正在编写一个用于在购物网站上下订单的自动化脚本。最后,我需要复制订单号。
<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>
解决方案
获取值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())
推荐阅读
- python-imaging-library - 我已经下载了 pyaudio.whl 但不是通过 powershell 或 cmd 运行,而是使用 open 与其他应用程序
- python - 如何编写一个方法来删除带有烧瓶请求的文件中的某些行?
- nuxt.js - 如何从 Nuxt 中的 URL 中删除锚标签?
- python - 读取特定文本并通过在特定字符处中断将其写入多行
- amazon-web-services - eb create 和 eb deploy 卡在上传 0%
- html - 如何阻止我的最后一个网格项目溢出?
- asp.net - 是否可以从 .NET Framework 4.8 更改为 4.7.2
- android - AOSP 9 的默认 Google Android 启动器的数据在哪里?
- python - AWS 上的“没有名为 lxml 的模块”
- reactjs - 使用分页反应原生钩子和调用 API