今天给各位分享selenium滑动的知识,其中也会对selenium滑动鼠标进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、selenium中TouchAction的简单使用
- 2、Selenium 的 ActionChains
- 3、python+Selenium之自动滑块破解滑块验证码
- 4、用Selenium模拟页面滚动
- 5、selenium点击不了?滑屏失败?
selenium中TouchAction的简单使用
TouchAction,类似于ActionChains,ActionChains只是针对PC端程序鼠标模拟的一系列操作,对H5页面操作是无效的。TouchAction可以对H5页面操作,通过TouchAction可以实现点击、滑动、拖拽、多点触控,以及模拟手势等各种操作。
1.tap 在指定元素上敲击
2.double_tap 在指定元素上双敲击
3.flick 手势滑动
1.打开百度,输入“selenium测试”,通过TouchAction点击搜索框,滑动到底部,点击下一页
Selenium 的 ActionChains
前一篇介绍了 selenium 定位元素的 8 种方法,基本上只要页面上看得到的元素都能够被定位到就能对它们进行操作,但也有一些元素不能光靠定位到了就能执行操作,例如隐藏的元素,需要将鼠标移动到这个元素的位置上才会显现才能对它进行操作, 这时就需要用到 ActionChains 的功能,来实现鼠标移动、右键、双击、拖拉等功能
首先将此功能导入 from selenium.webdriver.common.action_chainsimport ActionChains
一、将鼠标滑动到指定位置并进行点击
二、鼠标右键功能
ActionChains 的方法列表
click (self, on_element=None ) ——单击鼠标左键
click_and_hold (self, on_element=None ) ——点击鼠标左键,不松开
context_click (self, on_element=None ) ——点击鼠标右键
double_click (self, on_element=None ) ——双击鼠标左键
drag_and_drop (self, source, target ) ——拖拽到某个元素然后松开
drag_and_drop_by_offset (self, source, xoffset, yoffset ) ——拖拽到某个坐标然后松开
key_down (self, value, element=None ) ——按下某个键盘上的键
key_up (self, value, element=None ) ——松开某个键
move_by_offset (self, xoffset, yoffset ) ——鼠标从当前位置移动到某个坐标
move_to_element (self, to_element ) ——鼠标移动到某个元素
move_to_element_with_offset (self, to_element, xoffset, yoffset ) ——移动到距某个元素(左上角坐标)多少距离的位置
perform (self) ——执行链中的所有动作
release (self, on_element=None ) ——在某个元素位置松开鼠标左键
send_keys (self, *keys_to_send ) ——发送某个键到当前焦点的元素
send_keys_to_element (self, element, *keys_to_send ) ——发送某个键到指定元素
python+Selenium之自动滑块破解滑块验证码
头大系列:以虎嗅网注册页面的滑块验证码为例:
打开浏览器调试工具,点击左上角按钮进行页面元素跟踪,然后将鼠标移动到滑块验证码的图像上,就发现问题了,这也是关键所在:
验证码的图像是由很多个这样的10x58(宽10高58)的小方块拼接而成的。再检查一下元素标签,发现每一个小方块的元素标签里面都有background-image:url以及background-position这两个关键的信息。
既然是url,就不妨打开链接来观察。发现打开的链接是一张图片,但却是一张乱七八糟的图片。
得到这张乱七八糟的图片,第一感觉是重影。试猜想,会不会将每一个小方块的url链接图片都重叠在一起或拼接在一起就能组成我们所看到的验证码图片。
但经打开每一张图片发现,每个小方块后面的url链接的图片是一样的。
这就说明不可能是将图片进行重叠或拼接了。那就有可能是另外一种可能:将这张完整的验证码图片的部分区域切割然后打乱排序,形成一张新的图片,而这张新的图片就是我们现在所看到的乱七八糟的图片。
再观察发现,每个小方块后面还有background-position这个重要的信息。发现里面正是-157px -58px; -145px -58px;这种形式,是不是很像坐标的形式了。而进一步猜想,将我们刚刚的乱七八糟的图按每一个小方块的坐标进行切割,然后再进行排序,是不是就能得到原来完整的验证码图片了。
进行实践:
运用PIL模块的切割crop()以及粘贴paste(),重新将图片进行整合。效果神奇出现:
先不管其他了的。先把两张完整的图片拼接出来再进行下一步吧。
按照相同的方法,找到页面元素中鼠标点击后的出现缺口的验证码图片位置,找到缺口图片乱七八糟的url链接。
通过相同方法拼接:
已经得到两张关键的验证码图片,那接下来就是PIL大显身手的时候了,对比两张图片的像素点,缺口位置明显黑了一块,也就是RGB三色必然与周围的像素RGB三色差别明显。
将两张图片的每个像素点进行遍历对比,RGB三色任意一色差距大于一定的范围即视为是滑块的缺口。
找到缺口之后返回遍历的像素点的x坐标值(因为滑块只能X轴左右移动,所以y轴可以不需要用到),而x坐标就是滑块需要移动的距离。
完美拼接。但被吃了,也是美中不足:
快速,匀速,准确,所谓的“快,准,稳”,一样不差。
那就认定你是机器人来滑动的吧,把你吃掉!
用Selenium模拟页面滚动
TouchActions:模拟pc和h5的点击,滑动,拖拽,多点触控等多种手势操作
实现方法:new_action.scroll_from_element(a, 0, 10000).perform(),10000表示滑动的偏移量,如果不知道大小,尽量最大。
示例:百度页面-输入'灵题库'-百度一下,然后滑动页面并最大化窗口
selenium点击不了?滑屏失败?
之前写过几种可能: 在这里
我出现的问题:
第一:没有全屏模式,出现了其他按钮的遮挡
解决方案是:
driver.maximize_window()
第二:滑屏出现了问题
我参考的这一篇文章: selenium_通过selenium控制浏览器滚动条
里面的方法我都实验了一遍 不知道为什么 效果不理想
最後花钱找人解决了问题
driver.execute_script('document.documentElement.scrollTop={0}'.format(9000))
一条金贵的代码
最後附上代码 实现翻页
import time
from seleniumimport webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument("'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("")
driver.maximize_window()
driver.find_element_by_xpath('//a[@title="蜂蜂点评"]').click()
driver.get_screenshot_as_file(r'C:\Users\weidu\PycharmProjects\day21\pachong\test\dianping.png')
# driver.execute_script("window.scrollBy(0,100000)")
driver.get_screenshot_as_file(r'C:\Users\weidu\PycharmProjects\day21\pachong\test\fanye.png')
driver.implicitly_wait(10)
# driver.switch_to.frame(0)
for _in range(5):
driver.execute_script('document.documentElement.scrollTop={0}'.format(9000))
time.sleep(1)
driver.find_element_by_xpath("//*[text()='后一页']").click()
关于selenium滑动和selenium滑动鼠标的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
2、本站永久网址:https://www.yuanmacun.com
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
源码村资源网 » selenium滑动(selenium滑动鼠标)
1 评论