Python 使用selenium通过xpath查找元素查找添加到购物车按钮

Python 使用selenium通过xpath查找元素查找添加到购物车按钮,python,python-3.x,selenium,selenium-webdriver,beautifulsoup,Python,Python 3.x,Selenium,Selenium Webdriver,Beautifulsoup,我试图创建一个函数,通过搜索按钮上的文本来定位给定网站上的任何“添加到购物车”按钮。例如,亚马逊说“添加到购物车”,所以我使用这个函数来尝试定位按钮。不幸的是,我得到了: selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“//div[.=”添加到购物车“]” 我也尝试过使用这个功能,它可以在其他网站上使用,但不能在亚马逊上使用 def GetButtons(driver

我试图创建一个函数,通过搜索按钮上的文本来定位给定网站上的任何“添加到购物车”按钮。例如,亚马逊说“添加到购物车”,所以我使用这个函数来尝试定位按钮。不幸的是,我得到了:

selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“//div[.=”添加到购物车“]”

我也尝试过使用这个功能,它可以在其他网站上使用,但不能在亚马逊上使用

def GetButtons(driver, url):
    driver.get(url)
    html = driver.page_source
    driver.quit()
    soup = BeautifulSoup(html, 'html.parser')
    buttons = soup.find_all('button')
    return buttons

GetButtons(driver, 'https://www.amazon.com/gp/product/B00ZG9U0KA?pf_rd_r=AQC5SP1PPERA8C37YCC8&pf_rd_p=5ae2c7f8-e0c6-4f35-9071-dc3240e894a8')
有没有一种更简单的方法可以通过一种动态的方式来实现这一点,并且可以很容易地应用到其他网站上?我担心的是有些网站有按钮,有些网站有链接。使用BeautifulSoup返回所有链接或标记会返回太多的结果,无法进行实际排序

有什么办法可以做到这一点吗?该功能不一定要自动找到按钮(尽管那会很好),但如果我能把它缩小到足够小的范围,搜索10-20个可能的结果,那就太完美了。

两件事

  • 在Amazon上,文本为“addtocart”,小写为“to”,大写为“to”
  • 通过将xpath更改为
    “/*[.=”+text+“']]”“
    ,我能够找到它(在更正了to/to错误之后)。对于一般应用来说,它可能过于广泛,但值得一试

  • 谢谢你,真不敢相信我在过去的几个小时里忽略了这一点。那很好用。
    def GetButtons(driver, url):
        driver.get(url)
        html = driver.page_source
        driver.quit()
        soup = BeautifulSoup(html, 'html.parser')
        buttons = soup.find_all('button')
        return buttons
    
    GetButtons(driver, 'https://www.amazon.com/gp/product/B00ZG9U0KA?pf_rd_r=AQC5SP1PPERA8C37YCC8&pf_rd_p=5ae2c7f8-e0c6-4f35-9071-dc3240e894a8')