Python Selenium 从 eBay Productpage 获取 "sold items" 信息

Python Selenium get "sold items" information from eBay Productpage

我想在 eBay 产品页面上单击以下元素“23 verkauft”,您可以在此屏幕截图中看到它:

这是此元素的 HTMl 代码:

这是我的代码,但 webdriver 无法找到该元素或无法点击它。

sold = WebDriverWait(driver, 10).until(
                    EC.presence_of_element_located((By.XPATH, "//span[@class, 'vi-txt-underline']")))
sold.click()

您的定位器有误。
而不是

//span[@class, 'vi-txt-underline']

应该是

//a[@class='vi-txt-underline']

此外,您应该使用 visibility_of_element_located 而不是 presence_of_element_located,因为前一种方法将等待更成熟的元素状态,不仅出现在页面上而且可见。
你也可以直接点击那里的元素,不需要额外的代码行。
所以你的代码可以是

WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//a[@class='vi-txt-underline']"))).click()

你已经足够接近了。但你必须做出调整:

  • 您需要使用 (By.XPATH, "//span[@class='vi-txt-underline']")
  • 而不是 (By.XPATH, "//span[@class, 'vi-txt-underline']")
  • 而不是 you need to use

解决方案

要单击文本为 23 verkauft 的元素,您需要引入 WebDriverWait for the and you can use either of the following :

  • 使用LINK_TEXT:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "23 verkauft"))).click()
    
  • 使用CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.vi-txt-underline"))).click()
    
  • 使用 XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[text()='23 verkauft']"))).click()
    
  • 注意:您必须添加以下导入:

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