2016-09-23 90 views
-2

我想使用Selenium(在Python中)将项目添加到我的亚马逊购物车。具体从一个页面如: https://www.amazon.com/gp/offer-listing/B01GHQ02DK/ie=UTF8&condition=all **将此链接复制到您的浏览器,不要直接点击。使用Selenium python添加到购物车亚马逊

正如你所看到的,有几种选择可以添加到您的购物车。看看源代码,我无法确定如何“点击按钮”,这会将我想要的选择添加到购物车中(例如,假设我希望列表中的第二个)。任何帮助将不胜感激,谢谢。

编辑:添加了我想要完成的示例代码。需要帮助填补空白。

from selenium import webdriver 

url = "https://....**website posted above**" 
driver = webdriver.Firefox() 
driver.get(url) 

def add2ndItemToCart(): 
    # Don't know what to put here 

add2ndItemToCart() 
+1

你可以发布你到目前为止尝试过的代码吗? – orde

+0

寻求调试帮助的问题(**“为什么这个代码不工作?”**)必须包含所需的行为,*特定的问题或错误*和*在问题本身中重现它所需的最短代码* **。没有**明确问题陈述**的问题对其他读者没有用处。请参阅:[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 – MattDMo

+0

说实话我不知道从哪里开始。我的意思是我可以发布启动一个selenium webdriver实例的代码,并转到上述网站。我的问题陈述很清楚。我想使用硒将这些物品中的一种添加到我的购物车中。你是否说没有人能够帮助我,除非我有自己的想法? (因为我没有) – cracka31

回答

2

有许多方法可以确定您想要点击的按钮。一个简单的方法是获取它的xpath。 Chrome有一个方便的方法来做到这一点。右键点击按钮并选择'检查元素'。一个新框架将打开,并且该按钮的HTML代码将被突出显示。右键单击此高亮显示的行,然后选择复制并滑过以选择“复制XPath”。然后,您可以使用find_element_by_xpath('xpath')。click()将您从检查元素中复制的内容替换为'xpath'。见代码示例:

from selenium import webdriver 
from time import sleep 

url = "http://rads.stackoverflow.com/amzn/click/B01GHQ02DK" 

driver = webdriver.Chrome() 
driver.get(url) 

sleep(3) 

driver.find_element_by_xpath('//*[@id="a-autoid-1"]/span/input').click() 

我猜你在找什么在某些页面并不总是最终被第二项。当你检查html时,你会发现每一行都有一些独特的信息,你可以很容易地遍历所有适当的元素来选择适合你的元素,例如:最佳价格,最高收视率等。W3Schools在XPath上有非常好的教程。

此外,使用睡眠不是等待页面加载的最佳方式。在这个例子中,我用它来表达权宜之计。

+0

谢谢!这非常有帮助。你知道是否有办法在html源代码中找到xpath?例如,搜索“autoid-1”没有任何结果。 – cracka31

+0

是的,如果您使用Chrome检查元素如上所述。似乎有几个Firefox附加组件可以做同样的事情。 – Dkellygb

+0

用上面描述的方法,我需要物理上右键单击按钮。我在问......有没有一种方法可以将源代码中的某行联系起来,以便为我提供xpath。这样,如果我知道在源代码中找到按钮的位置,那么我知道xpath(所以我不必物理地右键单击并检查元素)。对不起,如果我不够清楚。 – cracka31

0

使用硒,你只需要找到该按钮的唯一选择(在这种情况下,仅仅是ID),使用方法find_element_by_id最后点击()来模拟点击:

driver.find_element_by_id('add-to-cart-button').click() 
1

你可以做到这一点点击第一个“被新的”选项:

from selenium import webdriver 

url="http://rads.stackoverflow.com/amzn/click/B01GHQ02DK" 
driver=webdriver.Firefox() 
driver.maximize_window() 
driver.get(url) 
driver.implicitly_wait(5) 
driver.find_element_by_name('submit.add-to-cart').click() 

而对于“所用”,你必须首先点击单选按钮,然后单击添加到购物车按钮,下面的示例代码:

from selenium import webdriver 

url="http://rads.stackoverflow.com/amzn/click/B01GHQ02DK" 
driver=webdriver.Firefox() 
driver.maximize_window() 
driver.get(url) 
driver.implicitly_wait(5) 
driver.find_element_by_xpath(".//*[@id='usedBuySection']/i").click() 
driver.find_element_by_name('submit.add-to-cart-ubb').click()