千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > selenium-元素交互操作

selenium-元素交互操作

来源:千锋教育
发布人:qyf
时间: 2022-09-08 17:58:43 1662631123

selenium-元素交互操作

  用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽(滑动验证)等等。而selenium给我们提供了一个类来处理这类事件——ActionChains;

  selenium.webdriver.common.action_chains.ActionChains(driver)

  这个类基本能够满足我们所有对鼠标操作的需求。

  actionChains的基本使用:

  首先需要了解ActionChains的执行原理,当你调用ActionChains的方法时,不会立即执行,而是会将所有的操作按顺序存放在一个队列里,当你调用perform()方法时,队列中的时间会依次执行。

  这种情况下我们可以有两种调用方法:

  链式写法

  menu = driver.find_element_by_css_selector(".div1")

  hidden_submenu = driver.find_element_by_css_selector(".div1 #menu1")

  ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()

  分步写法

  menu = driver.find_element_by_css_selector(".div1")

  hidden_submenu = driver.find_element_by_css_selector(".div1 #menu1")

  actions = ActionChains(driver)

  actions.move_to_element(menu)

  actions.click(hidden_submenu)

  actions.perform()

  两种写法本质是一样的,ActionChains都会按照顺序执行所有的操作。

  actionChains方法列表:

  click(on_element=None) ——单击鼠标左键

  click_and_hold(on_element=None) ——点击鼠标左键,不松开

  context_click(on_element=None) ——点击鼠标右键

  double_click(on_element=None) ——双击鼠标左键

  drag_and_drop(source, target) ——拖拽到某个元素然后松开

  drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开

  key_down(value, element=None) ——按下某个键盘上的键

  key_up(value, element=None) ——松开某个键

  move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标

  move_to_element(to_element) ——鼠标移动到某个元素

  move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置

  perform() ——执行链中的所有动作

  release(on_element=None) ——在某个元素位置松开鼠标左键

  send_keys(*keys_to_send) ——发送某个键到当前焦点的元素

  send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素

  示例代码:

  from selenium import webdriver

  from selenium.webdriver.common.keys import Keys

  import time

  try:

  driver = webdriver.Chrome()

  driver.implicitly_wait(10)

  # 1、往jd发送请求

  driver.get('https://www.jd.com/')

  # 找到输入框输入围城

  input_tag = driver.find_element_by_id('key')

  input_tag.send_keys('华为')

  # 键盘回车

  input_tag.send_keys(Keys.ENTER)

  time.sleep(2)

  # 找到输入框输入墨菲定

  input_tag = driver.find_element_by_id('key')

  input_tag.clear()

  input_tag.send_keys('樊登读书')

  # 找到搜索按钮点击搜索

  button = driver.find_element_by_class_name('button')

  button.click()

  time.sleep(10)

  finally:

  driver.close()

  或者前进后退相关

  import time

  from selenium import webdriver

  browser = webdriver.Chrome()

  browser.get('https://www.cnblogs.com/xuanyuan/')

  browser.find_element_by_partial_link_text('我是如何把计算机网络考了100分的?').click()

  time.sleep(3)

  browser.back() # 后退

  time.sleep(3)

  browser.forward() # 前进

  time.sleep(5)

  browser.close()

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT