Я не могу нажать кнопку «купить сейчас» на Amazon с помощью Selenium Python

#python #selenium #selenium-webdriver

#python #селен #selenium-webdriver

Вопрос:

Я пытаюсь создать бота Amazon. Я нахожусь в последнем процессе, но я не могу нажать кнопку «Купить сейчас» с помощью XPath или full XPath.Я мог бы найти другой уникальный селектор, потому что в этом вводе нет идентификатора.

введите описание изображения здесь

 from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import NoSuchElementException
import winsound


options = webdriver.ChromeOptions()
options.add_argument("user-data-dir=C:\Users\QP\AppData\Local\Google\Chrome\User Data")


driver = webdriver.Chrome(executable_path="C:\webdrivers\chromedriver.exe", chrome_options=options)
driver.get("https://www.amazon.com.tr/gp/product/9750748468?pf_rd_r=NCJRXGDB60BMBAWHZB0Kamp;pf_rd_p=dbef927e-126e-4d59-a744-316eb26cc421amp;pd_rd_r=081be57a-efdb-4f6b-b282-72fb528b1bc5amp;pd_rd_w=Avc97amp;pd_rd_wg=XdzTGamp;ref_=pd_gw_unk")
try:
    addCart = driver.find_element_by_class_name("a-button-stack")
    addCart.submit()

    frequency = 2500
    duration = 50
    winsound.Beep(frequency, duration)

    completeTheShopping = driver.find_element_by_class_name("a-button-inner")
    completeTheShopping.click()

    buyNow = driver.find_element_by_xpath('/html//body/div[8]/div/div/div[1]/div[2]/div/div[2]/div/div/div/div/div[1]/span/span//span[1]/span/input')
    buyNow.click()


    print("Item found")

except NoSuchElementException:
    print("Item doesnt exist")
 

Комментарии:

1. Вы пытались добраться до элемента grandparent с id=BottomSubmitOrderButtonId помощью и найти элемент с тегом ‘input’ оттуда?

Ответ №1:

Это решит проблему

 from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import NoSuchElementException
import winsound
import time

options = webdriver.ChromeOptions()
options.add_argument("user-data-dir=C:\Users\QP\AppData\Local\Google\Chrome\User Data")

driver = webdriver.Chrome(executable_path="C:\webdrivers\chromedriver.exe", chrome_options=options)
driver.get("https://www.amazon.com.tr/gp/product/9750748468?pf_rd_r=NCJRXGDB60BMBAWHZB0Kamp;pf_rd_p=dbef927e-126e-4d59-a744-316eb26cc421amp;pd_rd_r=081be57a-efdb-4f6b-b282-72fb528b1bc5amp;pd_rd_w=Avc97amp;pd_rd_wg=XdzTGamp;ref_=pd_gw_unk")
try:
    addCart = driver.find_element_by_class_name("a-button-stack")
    addCart.submit()

    frequency = 2500
    duration = 50
    winsound.Beep(frequency, duration)
    time.sleep(2)
    completeTheShopping = driver.find_element_by_class_name("a-button-inner")
    completeTheShopping.click()
    time.sleep(2)
    buyNow = driver.find_element_by_xpath('//*[@id="sc-buy-box-ptc-button"]/span/input')
    buyNow.click()


    print("Item found")

except NoSuchElementException:
    print("Item doesnt exist")

 

Как я это решил

Вы использовали Full xpath where, поскольку вы должны были скопировать xpath , и теперь это работает. И я также добавил time.sleep задержку, так как это помогает, если интернет иногда лагает. Надеюсь, это решит проблему. И да, я использовал драйвер Edge, возможно, вы захотите изменить его обратно на chrome. Вы должны скопировать xpath следующим образом Копия изображения Xpath

Комментарии:

1. когда я использовал xpath, ничего не изменилось, и time.sleep (2) не работал. Большое вам спасибо.

2. @UmutPalabiyik Вы можете использовать pyautogui module, если не хотите иметь дело с политикой защиты от ботов amazon.