当前位置: 首页 > news >正文

常见控件应用

常见控件应用

  • 1.操作Ajax选项
  • 2.滑动滑块操作

1.操作Ajax选项

Ajax即Asynchronous JavaScript and XML(异步JavaScript和XML),是指一种创建交互式、快速动态网页应用的网页开发技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着Ajax可以在不重新加载整个网页的情况下,对网页的某部分内容进行更新。搜狗搜索的搜索框使用了Ajax。被测地址为https://www.sogou.com/。单击一下搜狗搜索框,切换到搜索框后,会弹出推荐搜索的热词,这个效果就是Ajax效果。

在这里插入图片描述

  • 通过模拟键盘输入下键(↓)进行选项选择
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get('https://www.sogou.com/')ele1 = driver.find_element(By.ID,"query")
ele1.click()
sleep(1)
ele1.send_keys(Keys.ARROW_DOWN)
ele1.send_keys(Keys.ARROW_DOWN)
ele1.send_keys(Keys.ARROW_DOWN)
sleep(5)
driver.quit()
  • 通过模糊匹配选择选项。
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get('https://www.sogou.com/')
driver.find_element(By.ID,'query').send_keys('storm')
sleep(1)
sercont = driver.find_element(By.XPATH,'//*[@id="vl"]/div[1]/ul/li[contains(.,"形容词")]').click()
sleep(5)
driver.quit()

上述代码先在搜索框中输入了“storm”,然后从匹配的选项中选择了带有“形容词”字样的选项,再进行搜索操作(搜索“storm+形容词”)。

  • 固定选择某一个位置的选项。
    Ajax悬浮框的内容会发生变化(根据一定的推荐算法),而某些时候你可能只是想固定选择悬浮框中的某一个选项,如第二项,这时可以参考下面的代码
from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
driver.get('https://www.sogou.com/')
driver.find_element('id','query').send_keys('storm')
sleep(1)
sercont = driver.find_element('xpath','//*[@id="vl"]/div[1]/ul/li[2]').click() # li[2]选择第2项
sleep(5)
driver.quit()

2.滑动滑块操作

在实际项目中,你可能会遇到以下场景:在某些页面中需要从左到右拖动滑块进行验证,然后才能进行下一步操作。
在这里插入图片描述
在这里插入图片描述
可以看出,无论是滑块本身,还是滑块所在的框,都是div元素。

  • 操作思路
    • 定位到滑块。
    • 计算滑块框的宽度。
    • 然后将滑块向右拖动框的宽度的距离。
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get('https://passport.ctrip.com/user/reg/home')
driver.find_element(By.XPATH,'//*[@id="agr_pop"]/div[3]/a[2]').click()
sleep(2)
# 获取滑块
slider = driver.find_element(By.XPATH,'//*[@id="slideCode"]/div[1]/div[2]')
# 获取整个滑块框
ele = driver.find_element(By.ID,'slideCode')
# 需要使用到Actions的方法来进行拖动
ActionChains(driver)\.drag_and_drop_by_offset(slider,ele.size['width'], ele.size ['height'])\.perform()
# 这样也行,向右拖动一定的距离,长度是滑块框的宽度
# ActionChains(driver).drag_and_drop_by_offset(slider,ele.size['width'], 0).perform()
sleep(2)
driver.quit()
http://www.lryc.cn/news/313542.html

相关文章:

  • 什么是降压恒流芯片?它有什么作用?
  • 14:00面试,15:00就出来了,问的问题过于变态了。。。
  • Maven的settings.xml配置
  • 利用redis实现秒杀功能
  • vscode 使用ssh进行远程开发 (remote-ssh),首次连接及后续使用,详细介绍
  • rabbitmq总结
  • 专利预审是什么
  • 淘宝商品详情数据丨商品搬家丨商品采集丨商城建站
  • redis(1)-key-value-基本概念
  • cocos creator 3.7.2使用shader实现图片扫光特效
  • 【C++杂货铺】详解string
  • 算法刷题day20:二分
  • 【Spring云原生】Spring Batch:海量数据高并发任务处理!数据处理纵享新丝滑!事务管理机制+并行处理+实例应用讲解
  • docker ubuntu20.04 安装教程
  • 防御保护----IPSEC VPPN实验
  • 音视频数字化(视频线缆与接口)
  • 爬虫实战——巴黎圣母院新闻【内附超详细教程,你上你也行】
  • mysql的语法总结2
  • 一度电竟然可以做这么多事情!
  • 【Go】golang值交换,指针
  • 共享WiFi软件哪家强?2024年共享wifi项目排名为你揭晓!
  • Hudi入门
  • LORA: LOW-RANK ADAPTATION OF LARGE LAN-GUAGE MODELS
  • 使用Pytorch导出自定义ONNX算子
  • unity-urp:视野雾
  • Spring Cloud Gateway介绍及入门配置
  • Thingsboard本地源码部署教程
  • 【MySQL 系列】MySQL 起步篇
  • C++的成员初始化列表
  • 为什么TikTok视频0播放?账号权重提高要重视