滑块按钮单击selenium python

6 javascript python web-scraping selenium-chromedriver selenium-webdriver

我的问题如下:

我正在训练以检索本网站上的信息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)
Run Code Online (Sandbox Code Playgroud)

错误1

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

QHa*_*arr 3

这可能并不理想,但您可以使用 +/- 按钮调整滑块,直到达到目标。这是顶部滑块的示例。您还应该将目标的边界限制为 4.000 \xe2\x82\xac 的下限和 60.000 \xe2\x82\xac 的上限。

\n
from selenium import webdriver\nfrom selenium.webdriver.support.ui import WebDriverWait\nfrom selenium.webdriver.support import expected_conditions as EC\nchrome_options = webdriver.ChromeOptions()\n# chrome_options.add_argument(\'--headless\')\nchrome_options.add_argument(\'--no-sandbox\')\nchrome_options.add_argument(\'--disable-dev-shm-usage\')\nchrome_options.add_argument(\'--start-maximized\')\nwebdriver = webdriver.Chrome(\'chromedriver\',chrome_options=chrome_options)\nurl = "https://www.cetelem.es/"\n\nwebdriver.get(url)\ntargetSliderStep = 22.700\ntargetSliderStep = round(targetSliderStep  * 2) / 2  # to ensure is units covered by clicking\nprint(\'target: \' + "{0:.3f}".format(targetSliderStep))\nactualSliderStep = float(webdriver.find_element_by_id(\'slider-step-value\').text.replace(\' \xe2\x82\xac\',\'\'))\n\nif actualSliderStep < targetSliderStep:\n    while float(webdriver.find_element_by_id(\'slider-step-value\').text.replace(\' \xe2\x82\xac\',\'\')) < targetSliderStep:\n        webdriver.find_element_by_css_selector("#slider-step .up-button").click()\nelif actualSliderStep > targetSliderStep:\n    while float(webdriver.find_element_by_id(\'slider-step-value\').text.replace(\' \xe2\x82\xac\',\'\')) > targetSliderStep:\n        webdriver.find_element_by_css_selector("#slider-step .down-button").click()\nprint(\'actual: \' + webdriver.find_element_by_id(\'slider-step-value\').text.replace(\' \xe2\x82\xac\',\'\'))\n
Run Code Online (Sandbox Code Playgroud)\n
\n

回答您的其他问题:

\n

其他滑块:

\n

对其他滑块使用相同的逻辑(也许添加 12-96 的范围):

\n
targetTimeStep = 22.700\ntargetTimeStep = round(int(targetTimeStep))  # to ensure is units covered by clicking\nprint(\'target: \' + str(targetTimeStep))\nactualTimeStep = int(webdriver.find_element_by_id(\'slider-time-step-value\').text)\n\nif actualTimeStep < targetTimeStep:\n    while int(webdriver.find_element_by_id(\'slider-time-step-value\').text) < targetTimeStep:\n        webdriver.find_element_by_css_selector("#slider-time-step .up-button").click()\nelif actualTimeStep > targetTimeStep:\n    while int(webdriver.find_element_by_id(\'slider-time-step-value\').text) > targetTimeStep:\n        webdriver.find_element_by_css_selector("#slider-time-step .down-button").click()\nprint(\'actual: \' + webdriver.find_element_by_id(\'slider-time-step-value\').text)\n
Run Code Online (Sandbox Code Playgroud)\n
\n

选择项目:

\n

您可以通过单击左侧菜单栏,然后​​通过 href 属性值子字符串定位项目链接来获取所有较长的项目列表。

\n
webdriver.find_element_by_id(\'showLeft\').click()\nwebdriver.find_element_by_id(\'layout_6\').click()\nprojects = webdriver.find_elements_by_css_selector("[href*=\'prestamos/prestamo-\']")\nprint(len(projects))\n
Run Code Online (Sandbox Code Playgroud)\n
\n

CSS 选择器:

\n

我自始至终都使用 CSS 选择器,因为现代浏览器针对 CSS 进行了优化。

\n

例如,以下内容:

\n
#slider-step .up-button \n
Run Code Online (Sandbox Code Playgroud)\n

#是具有 id ( )的父元素,与具有类 ( )slider-step的一个/多个元素的后代组合。是一个id 选择器,一个类选择器,是一个后代组合器,即选择该类的子级,其父级具有该 id。.up-button#." "

\n

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

\n

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

\n

在此输入图像描述

\n

可以清楚地看到父类id和子类+

\n

如果你想练习 css 选择器,下面的链接很有趣,你可以在这里阅读选择器

\n