Они вполне могут быть динамичными. Вместо этого выберите с помощью селектора типа label
и индекс, чтобы щелкнуть необходимый элемент, например, 0 для элемента, который вы упоминаете (первый в списке). Кроме того, добавьте условие ожидания для label
s, чтобы присутствовать.
Если вы хотите ограничиться только этими 5 size
вариантами, тогда используйте следующий селектор CSS вместо label
:
.sku-contents ul:nth-child(3) label
1010 * т.е. *
sizes = WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".sku-contents ul:nth-child(3) label")))
sizes[0].click()
После выбора размера вы можете получить цену из ценового узла в зависимости от того, хотите ли вы цену для данного размера выборки, например, 0-99.
Для получения окончательной цены используйте:
.product-under-sku-total-label
Код:
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
url = 'https://www.safetysign.com/products/7337/ez-pipe-marker'
driver = webdriver.Chrome()
driver.get(url)
labels = WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "label")))
labels[0].click()
price0to99 = driver.find_element_by_css_selector('.product-pricingnodecontent').text
priceTotal = driver.find_element_by_css_selector('.product-under-sku-total-label').text
print(priceTotal, price0To99)
# driver.quit()