我正在尝试生成一个机器人来自动从沃尔玛发出订单,但似乎我无法选择颜色和数量,因为它们不是真正的选择器而且它们没有id。 我正在使用python和selenium。
现在用于测试的项目是这样的: https://www.walmart.com/ip/8-x10-Picture-Frames-Set-of-6/10404226
关于数量,我认为我可以选择列表:
quantity = walmart.find_element_by_css_selector("span.product-quantity-dropdown-wrapper")
但之后我就无法选择数量。
答案 0 :(得分:0)
就quantity
而言,您可以操作实际的select
元素(通过Select
class),但这种元素在视觉上未被检测到,但实际上是可见的。至于颜色,你可以动态构造一个XPath表达式来“按名称”定位颜色。
完成工作实施(选择白色和数量= 2):
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
driver = webdriver.Chrome("/usr/local/bin/chromedriver")
driver.maximize_window()
driver.get("https://www.walmart.com/ip/8-x10-Picture-Frames-Set-of-6/10404226")
color = "White"
quantity = 2
wait = WebDriverWait(driver, 10)
# select color
color_selector = wait.until(EC.visibility_of_element_located((By.XPATH, "//span[@class = 'variant-swatch' and @title='{color}']/..".format(color=color))))
color_selector.click()
# harcode delay - see if you can avoid it
time.sleep(0.5)
# select quantity
quantity_selector = wait.until(EC.visibility_of_element_located((By.ID, "WMItemQtyDropDown")))
quantity_selector = Select(quantity_selector)
quantity_selector.select_by_value(str(quantity))
尽管如此,请确保您没有违反任何使用条款并保持合法的一面。一定要探索Walmart API(参见@ MattDMo的评论)。