在selenium python中单击滑块按钮

2024-02-10

我的问题如下:

我正在接受检索本网站信息的培训https://www.cetelem.es/ https://www.cetelem.es/.

我想做几件事:

  • 单击两个滑动按钮可更改信息。

  • 检索滑动按钮变化后的信息

  • 设置条件,仅在tin和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)

error https://i.stack.imgur.com/cV9nn.png1 https://i.stack.imgur.com/cV9nn.png

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


这可能并不理想,但您可以使用 +/- 按钮调整滑块,直到达到目标。这是顶部滑块的示例。您还应该将目标范围限制在 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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在selenium python中单击滑块按钮 的相关文章

随机推荐

  • 如何使用 C# 提取 MFCC

    我正在做一个个人项目 需要我用 C 进行一些信号处理和特征提取 更具体地说是提取MFCCs http en wikipedia org wiki Mel frequency cepstrum 有没有可用的代码用于在 C 中计算 MFCC 另
  • React.js - ForEach 作为一流组件?

    我听说过反应模板 但我仍然想知道是否可以制作一流的 ForEach 组件 我的最终目标是使这样的东西更具可读性 ul list map function item i return li item li ul instead ul ul
  • 调整窗口矩形文档

    MSDN 库将调整窗口矩形的 dwStyle 参数记录为 需要计算所需尺寸的窗口的窗口样式 请注意 您不能 指定 WS OVERLAPPED 样式 我还没有找到任何解释 他们所说的 不能 是什么意思 为什么我不能这样做 The WS OVE
  • 在 Javascript 中查看多页 TIFF

    我目前有多页TIFF图像 我需要通过 Javascript 逐页浏览它们 我对此一无所知 你能帮助我吗 我发现了一些其他问题 但似乎没有一个与 Javascript 有关 谢谢 我使用 Emscripten 将 LibTIFF 库移植到 J
  • 验证 .htaccess 文件中的 Googlebot

    我已经调查了一下 下面的代码可以工作吗 没那么容易检查 RewriteEngine on HostnameLookups Double RewriteCond REMOTE HOST googlebot com NC RewriteRule
  • 在 python 子进程中使用 exec 查找命令给出错误

    我正在尝试使用子进程模块 python 执行以下命令 usr bin find
  • Firefox 扩展内容脚本不会加载和附加 HTML

    下面的所有内容都可以在 Chrome 扩展中运行 但在移植到 Firefox 时会默默失败 加载中test html除非我删除 from it 附加 test element对身体 Firefox 扩展的样式是否必须放入单独的文件中 为什么
  • 我的 ViewModel 应该有视图或 ViewModel 的 ObservableCollection 吗?

    我试图理解使用时的基本 MVVM 设计方法项目控制通过绑定它数据模板 to 可观察集合在视图模型上 我见过绑定到 ObservableCollections 的示例strings Views and 视图模型 绑定到字符串似乎只是为了dem
  • 如何在 firefox 扩展中创建 JSON post 请求?

    我正在尝试调用 Google API 这是来自 Firefox 扩展的 JSON post 请求 例如 POST https www googleapis com urlshortener v1 url Content Type appli
  • Mac OS 10.9 不显示 Arduino 的 USB 调制解调器

    我正在尝试选择 dev tty usbmodem on my Arduino Lenardo设备 操作系统是Mac OSX 10 9 问题是它没有显示 我什至尝试安装FTDI http www ftdichip com Drivers VC
  • 高效的 p​​yspark join

    我读过很多关于如何在 pyspark 中进行高效连接的文章 我发现实现高效连接的方法基本上有 如果可以的话 使用广播连接 我通常不能因为数据框太大 考虑使用非常大的集群 我宁愿不因为 Use the 相同的分区器 最后一个是我宁愿尝试的一个
  • 双破折号 [--] 选项在 git Reset 上有什么作用?

    我见过这样的命令 git reset e542 readme txt 我了解此命令将提交 e542 中的文件 readme txt 的内容放入索引中 但什么是 选项在那里做什么 git reset 手册页将其列为前两种形式的可选 但我找不到
  • 如何构建神经网络来将两个数字相乘

    我正在尝试构建一个将 2 个数字相乘的神经网络 为了做同样的事情 我借助了 scikit learn 我想要一个具有 2 个隐藏层 5 3 和 ReLU 作为激活函数的神经网络 我已经定义了我的MLPRegressor如下 X data d
  • 校准 UI 加速度计?

    在我的应用程序中 我使用加速度计来控制游戏中的角色 现在我只允许纵向方向 因此用户必须向右或向左倾斜设备才能移动角色 到目前为止效果很好 我现在想要完成的是 校准 加速度计以考虑用户当前正在玩的倾斜度 假设用户侧躺 这些值将会倾斜 因为它没
  • 对于 BLOB,“length() IS NULL”是否与“IS NULL”等效且更快?

    我在 SSD 上有一个约 90 MB 的 SQLite 数据库 主要由消息附件组成 其中包括 BLOB 列内容 用于存储二进制附件数据 现在我发现以下查询 SELECT message id FROM attachments WHERE l
  • 如何创建 5 个值的数组/切片,所有值都相同

    Problem 在go编程语言中 如何创建一个长度为5的数组 并且所有元素具有相同的值 例如42 优先顺序 可读性 简洁性 性能 例如 package main import fmt func main s make int 5 for i
  • 如何在不输入n的情况下输入数组中的元素? (c++)

    输入 5 long long n cin gt gt n long long a n for long long i 0 i
  • 如何更新/写入数据到谷歌电子表格 api android (api v4)

    我一直在开发一个应用程序 我需要使用谷歌电子表格 API 将数据写入和更新到电子表格 我已经按照google提供的Android Quickstart进行操作谷歌表格API 安卓快速入门 https developers google co
  • window.mozIndexedDB 在 Firefox 15 中为 null

    我正在尝试运行 使用 IndexedDB 示例代码https developer mozilla org en US docs IndexedDB Using IndexedDB https developer mozilla org en
  • 在selenium python中单击滑块按钮

    我的问题如下 我正在接受检索本网站信息的培训https www cetelem es https www cetelem es 我想做几件事 单击两个滑动按钮可更改信息 检索滑动按钮变化后的信息 设置条件 仅在tin和tae改变时检索信息