[英]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.