Próbuję stworzyć bot, aby dodać telewizor 4K do mojego koszyka na bestbuy jako sposób na samodzielnie nauczyć się selenu. Mam problemy ze stowarzyszeniem zmiennej "elementu" do przycisku na stronie internetowej Bestbuy. Przeglądałem kilka forów i nie można znaleźć rozwiązania, które działa. Znalazłem element przez HTML z Strona internetowa BestBuy.

Oto obraz tego, co myślę, znajduje element w Chrome: Chrome On BestBuy

A oto mój kod Pythona (usprawiedliwiaj niechlujstwo mojego kodu, właśnie zacząłem naukę Selenium):

from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)

driver.get("https://www.bestbuy.ca/en-ca/product/samsung-75-4k-uhd-hdr-led-tizen-smart-tv-un75tu6900fxzc-2020-titan-grey-only-at-best-buy/14930256")
while True:
    if ("Add to Cart" in driver.page_source):
        print("In stock")
        element = driver.find_element_by_id("button_2Xgu4 primary_oeAKs.addToCartButton_1DQ8z.addToCartButton.regular_cDhX6")
        element.click()
        break
    else:
        print("Not in stock")
    driver.get("https://www.bestbuy.ca/en-ca/product/samsung-75-4k-uhd-hdr-led-tizen-smart-tv-un75tu6900fxzc-2020-titan-grey-only-at-best-buy/14930256");
        
    
    
1
Daniel Todd 23 listopad 2020, 06:00

1 odpowiedź

Najlepsza odpowiedź

Użyłeś find_element_by_id i umieścisz nazwę klasy zamiast identyfikatora elementu. Jednak element nie ma żadnego identyfikatora, więc musisz użyć find_element_by_class_name lub find_element_by_css_selector. Skopiowałem twój kod i użyłem nazwy klasy. To nie działało, więc używałem selektora CSS. I to działało.

Proszę bardzo:

element = driver.find_element_by_css_selector("div[class='addToCartLabel_1eyxz']")
element.click()

Możesz dowiedzieć się więcej o znalezieniu elementów Tutaj.

1
Jawad 23 listopad 2020, 03:39