#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 следующим образом
Комментарии:
1. когда я использовал xpath, ничего не изменилось, и time.sleep (2) не работал. Большое вам спасибо.
2. @UmutPalabiyik Вы можете использовать
pyautogui
module, если не хотите иметь дело с политикой защиты от ботов amazon.