如何找到按钮元素并单击它?

问题描述 投票:0回答:1

我尝试单击特定颜色,然后单击购买按钮,我找到颜色并可以单击它们,但找不到购买元素。我尝试了一些定位器,例如 XPATH、CSS_SELECTOR 等。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Edge() 
driver.maximize_window()
driver.get("https://www.digikala.com/product/dkp-4645665/")  

try:
    main_div = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "div.flex.lg\\:flex-wrap.overflow-x-auto.px-5.lg\\:px-0"))
    )
    
    child_elements = main_div.find_elements(By.CSS_SELECTOR, "div.bg-neutral-000.flex.items-center\
                                            .justify-center.cursor-pointer.ml-2.px-2.lg\\:px-0.styles_InfoSectionVariationColor__pX_3M") 
    specific_value = "سفید" 

    add_to_cart= WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "button[data-testid='add-to-cart']"))
    )
    for child in child_elements:
        time.sleep(1)
        if child.text == specific_value:
            add_to_cart.click()
            break

except Exception as e:
    print("Exception:", e)
finally:
    driver.quit()  
python selenium-webdriver web-scraping selenium-chromedriver
1个回答
0
投票
我认为在迭代子元素时,特定值不匹配。因此您无法单击颜色。尝试打印child.text数据并手动验证具体值。

另一种解决方案使用 child.get_attribute('innerText') 来获取子文本数据。

© www.soinside.com 2019 - 2024. All rights reserved.