滑块按钮单击selenium python

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了滑块按钮单击selenium python相关的知识,希望对你有一定的参考价值。

我的问题如下:

我正在训练检索本网站上的信息https://www.cetelem.es/

我想做几件事:

  • 单击两个滑动按钮以更改信息。
  • 更改滑动按钮后检索信息
  • 设置一个条件,只在锡和tae改变时检索信息。

我在google colab上尝试使用以下代码:

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)
webdriver.find_element_by_class_name("bar-slider importe").send_keys("20.000")
webdriver.find_element_by_class_name("bar-slider messes").send_keys("30")
webdriver.save_screenshot('sreenshot.png')
print(webdriver.find_element_by_tag_name('body').text)

error1

如果你有解决方案,你能解释我的错误吗?因为我是一个真正的初学者。

答案

这可能不太理想,但您可以使用+/-按钮调整滑块直到目标命中。这是顶部滑块的示例。您还应该将目标的界限限制在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的元素/元素。 #id selector.class selector" "descendant combinator,即选择有这个类的父母的类。

您希望尽可能使用id选择器,然后使用类选择器作为更快的选择器。

如果右键单击+按钮上的inspect元素,例如,对于顶部滑块,您将看到以下HTML:

enter image description here

您可以清楚地看到+的父ID和子类。

如果你想练习css选择器,下面的link很有趣,你可以阅读选择器here

以上是关于滑块按钮单击selenium python的主要内容,如果未能解决你的问题,请参考以下文章

使用 Selenium 使用 Python 单击按钮

ElementNotVisibleException:消息:尝试通过 Selenium 和 Python 单击按钮时出现元素不可交互错误

单击按钮后切换到打开的新浏览器 [Python][Selenium]

单击登录按钮后,Ebay 网站挂起 - Selenium Python

输入元素使点击按钮黯然失色 - Python,selenium

从头开始查看寻呼机图像(片段)滑块