这可能并不理想,但您可以使用 +/- 按钮调整滑块,直到达到目标。这是顶部滑块的示例。您还应该将目标范围限制在 4.000 € 的下限和 60.000 € 的上限。
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
chrome_options = webdriver.ChromeOptions()
# chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--start-maximized')
webdriver = webdriver.Chrome('chromedriver',chrome_options=chrome_options)
url = "https://www.cetelem.es/"
webdriver.get(url)
targetSliderStep = 22.700
targetSliderStep = round(targetSliderStep * 2) / 2 # to ensure is units covered by clicking
print('target: ' + "{0:.3f}".format(targetSliderStep))
actualSliderStep = float(webdriver.find_element_by_id('slider-step-value').text.replace(' €',''))
if actualSliderStep < targetSliderStep:
while float(webdriver.find_element_by_id('slider-step-value').text.replace(' €','')) < targetSliderStep:
webdriver.find_element_by_css_selector("#slider-step .up-button").click()
elif actualSliderStep > targetSliderStep:
while float(webdriver.find_element_by_id('slider-step-value').text.replace(' €','')) > targetSliderStep:
webdriver.find_element_by_css_selector("#slider-step .down-button").click()
print('actual: ' + webdriver.find_element_by_id('slider-step-value').text.replace(' €',''))
回答您的其他问题:
其他滑块:
对其他滑块使用相同的逻辑(也许添加 12-96 的范围):
targetTimeStep = 22.700
targetTimeStep = round(int(targetTimeStep)) # to ensure is units covered by clicking
print('target: ' + str(targetTimeStep))
actualTimeStep = int(webdriver.find_element_by_id('slider-time-step-value').text)
if actualTimeStep < targetTimeStep:
while int(webdriver.find_element_by_id('slider-time-step-value').text) < targetTimeStep:
webdriver.find_element_by_css_selector("#slider-time-step .up-button").click()
elif actualTimeStep > targetTimeStep:
while int(webdriver.find_element_by_id('slider-time-step-value').text) > targetTimeStep:
webdriver.find_element_by_css_selector("#slider-time-step .down-button").click()
print('actual: ' + webdriver.find_element_by_id('slider-time-step-value').text)
选择项目:
您可以通过单击左侧菜单栏,然后通过 href 属性值子字符串定位项目链接来获取所有较长的项目列表。
webdriver.find_element_by_id('showLeft').click()
webdriver.find_element_by_id('layout_6').click()
projects = webdriver.find_elements_by_css_selector("[href*='prestamos/prestamo-']")
print(len(projects))
CSS 选择器:
我自始至终都使用 CSS 选择器,因为现代浏览器针对 CSS 进行了优化。
例如,以下内容:
#slider-step .up-button
是一个父元素,其 id (#
) slider-step
与具有类 (.
) up-button
. The #
is an id选择器 https://developer.mozilla.org/en-US/docs/Web/CSS/ID_selectors, the .
a 类选择器 https://developer.mozilla.org/en-US/docs/Web/CSS/Class_selectors和" "
is a 后代组合器 https://developer.mozilla.org/en-US/docs/Web/CSS/Descendant_combinator即选择具有该 id 的父级的此类子级。
您希望尽可能使用 id 选择器,然后使用类选择器作为更快的选择器。
如果右键单击检查元素+
按钮,例如,对于顶部滑块,您将看到以下 HTML:
可以清楚地看到父类id和子类+
.
如果你想练习 css 选择器,请执行以下操作link https://flukeout.github.io/很有趣,你可以阅读选择器here https://developer.mozilla.org/en-US/docs/Web/CSS