【问题标题】:Selenium, Python - Difficulty selecting elements with XPath expressionsSelenium,Python - 难以使用 XPath 表达式选择元素
【发布时间】:2018-12-09 02:20:20
【问题描述】:

我有问题

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome( 
executable_path=r'C:\Users\Michelle\Downloads/chromedriver.exe')
#opens website%
driver.get("https://www.ebay.com")
#selects search bar and enters keys
inputElement = driver.find_element_by_id("gh-ac")
inputElement.send_keys('headphones')
inputElement.send_keys(Keys.ENTER)
Items = driver.find_elements_by_xpath('//*[@id="srp-river-results- 
listing1"]/div/div[2]/a/h3')
Prices = driver.find_elements_by_xpath('//*[@id="srp-river-results- 
listing1"]/div/div[2]/div[4]/div[1]/span')
print(Items[0].text + " : " + Prices[0].text)


driver.close()

好的,我正在尝试让 ebay 显示商品的名称和价格 但是在转到页面并查看价格的 xpath 之后,它们都是不同的

//*[@id="srp-river-results-listing1"]/div/div[2]/div[4]/div[1]/span
//*[@id="srp-river-results-listing2"]/div/div[2]
//*[@id="srp-river-results-listing3"]/div/div[2]/div[3]/div[1]/span
 ^ the xpaths 

除了 xpath,我还能如何让他们显示价格,有没有像使用元素一样的方法?

<span class="s-item__price">$99.00</span> 

使用这样的元素^?

【问题讨论】:

  • 请努力用清晰简洁的标题正确描述您的问题
  • 我花了大约 10 分钟来做这件事,因为我缺乏经验,这并不是一个更好的解释方式

标签: python selenium automation


【解决方案1】:

我尝试了您的代码,但您的 xpath 表达式没有得到任何结果,请使用更简单的 CSS 选择器表达式尝试以下操作:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys


def main():

    driver = webdriver.Chrome(executable_path=r'C:\Users\Michelle\Downloads\chromedriver.exe')
    driver.maximize_window()

    try:
        driver.get("https://www.ebay.com")

        input_element = driver.find_element_by_id("gh-ac")
        input_element.send_keys('headphones')
        input_element.send_keys(Keys.ENTER)

        items = driver.find_elements_by_css_selector('.srp-results .s-item .s-item__title')
        prices = driver.find_elements_by_css_selector('.srp-results .s-item .s-item__price')

        print("# Items: %d" % len(items))
        print("# Prices: %d" % len(prices))

        print(items[5].text + " : " + prices[5].text)

    finally:
        driver.quit()


if __name__ == '__main__':
    main()

输出:

# 项目:60 # 价格:60 2 件新耳机耳机带遥控和麦克风适用于 Apple iPhone 6S 6 5 5S 4S : $28.97

【讨论】:

  • 你真的不知道我是多么欣赏这一点。我想真正能做的就是说谢谢。
  • 这样做的目标是能够做到这一点,因此当您拍照时,它会为您提供该商品在 ebay 上的销售价格的准确比例,当然我离这个还有很长的路要走跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 2014-11-02
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
相关资源
最近更新 更多