繁体   English   中英

如何在 selenium 中仅单击选定的产品

[英]How to click only selected product in selenium

我正在练习 selenium 并尝试单击选择的产品,但不知何故它不起作用。 我很确定我对 css 选择器很乱。 请看看并帮助我。 谢谢你。

from selenium import webdriver
from time import sleep
 
driver = webdriver.Chrome('./chromedriver.exe')
driver.maximize_window()
driver.get('https://www.khepa.xyz/')
 
# Shop Page
driver.find_element_by_link_text('SHOP').click()
 
# Next Page
driver.find_element_by_css_selector('[class*="next"]').click()
 
# Select Product
# products = driver.find_elements_by_xpath('//*[@class="woocommerce-loop-product__title"]')
products = driver.find_elements_by_css_selector('[class*="status-publish"]')
for product in products:
    sunglasses = product.find_element_by_css_selector('a h2')
    if sunglasses == 'Sunglasses':
        sunglasses.click()
        break
 
 
sleep(5)
driver.close()

我建议使用 webdriver 等待,但您的主要问题是如果 sunglass.text == 'Sunglasses':.

# Select Product
# products = driver.find_elements_by_xpath('//*[@class="woocommerce-loop-product__title"]')
products = driver.find_elements_by_css_selector('[class*="status-publish"]')
for product in products:
    sunglasses = product.find_element_by_css_selector('a h2')
    if sunglasses.text == 'Sunglasses':
        sunglasses.click()
        break

以下只是为未来稳定性而建议的编辑。

wait = WebDriverWait(driver, 3)
driver.get('https://www.khepa.xyz/')
 
# Shop Page
wait.until(EC.element_to_be_clickable((By.LINK_TEXT,"SHOP"))).click()
 
# Next Page
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"[class*='next']"))).click()

现在更简单的 xpath 将是

//a[./h2[.='Sunglasses']]

这将被简单地用作

try:
    driver.find_element_by_xpath("//a[./h2[.='Sunglasses']]").click()
except:
    print('No item')

进口

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM