全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

selenium-元素交互操作

发布时间:2022-09-08 17:58:43
发布人:qyf

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()

相关文章

敏捷开发实行中各岗位职能是什么?

敏捷开发实行中各岗位职能是什么?

2023-10-14
敏捷开发在实际应用中有什么注意点?

敏捷开发在实际应用中有什么注意点?

2023-10-14
软件定制开发中的敏捷开发是什么?

软件定制开发中的敏捷开发是什么?

2023-10-14
三维重建 3D reconstruction有哪些实用算法?

三维重建 3D reconstruction有哪些实用算法?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取