在浏览器中,通常会用到鼠标来进行操作,比如右键菜单中选择一个操作,在 selenium 中提供了下列鼠标相关操作。
ActionChains 类提供了以下方法:
context_click()是Selenium库中的一个方法,它可以模拟鼠标右键点击操作。在浏览器中,右键点击会弹出一个菜单,该菜单显示了可用于该元素的所有操作。context_click()方法可用于执行此操作并选择要执行的操作。
模拟用户在 LMD 登陆界面,在输入邮箱地址的输入框右键,但是这里本身没有定义右键,所以不能打开右键,而无法操作右键,如果在项目中有用到,那右键后的菜单也可以进行定位,并操作。示例:
from selenium import webdriver
driver=webdriver.Firefox()
driver.get ('http://www.chuangyijia.com/admin/login') driver.implicitly_wait(3)
test=driver.find_element_by_id('email')
找到要执行右键操作的元素
ActionChains(driver).context_click(test).perform() 对被操作元素执行右键
注意事项:
double_click()是一个鼠标事件函数,它会在鼠标双击时被触发。双击事件是指用户快速连续点击鼠标左键两次,一般用于实现某些特殊操作或者进行快速编辑等操作。在双击事件中,第一次单击会触发单击事件,第二次单击会触发双击事件。
在double_click()函数中,可以定义一些动作和操作,例如打开一个新窗口、删除一条记录、选择一个项等。它主要被用于图形用户界面(GUI)中,如各种框架和库中的图形库,如Tkinter、Qt、wxWidgets等。因为在GUI中,鼠标双击事件是一种非常常见的用户操作。
from selenium import webdriver
driver=webdriver.Firefox()
driver.get ('http://www.chuangyijia.com/admin/login') driver.implicitly_wait(3)
test=driver.find_element_by_id('email')
找到要执行右键操
ActionChains(driver).double_click(test).perform() 对被操作元素执行双击
在一些 web 页面中,一些菜单需要将鼠标放上去,才会显示它的子菜单,在这种情况下,自动化需要模拟人为将鼠标放到菜单上。
move_to_element()方法是Selenium中模拟鼠标拖放操作的一种方法。它可以将鼠标指针移动到指定的元素上,然后按住鼠标左键拖动该元素到目标位置。
下面通过百度页面来实现这个操作,在百度页面中,要对搜素的设置进行设置, 这种操作需要将鼠标放到页面的设置菜单中,才能看到搜索设置,才能进行下一步的
操作。代码如下:
driver.get('https://www.baidu.com')
打开百度页面
seting=driver.find_element_by_link_text('设置')
找到设置
ActionChains(driver).move_to_element(seting).perform() 将鼠标移动到设置菜单上
driver.find_element_by_link_text('搜索设置').click() 点击设置下的搜索设置
注意事项:
使用键盘时,需要导入 selenium.webdriver.common.keys 中的 Keys 模块。
send_keys() 方法是Selenium WebDriver 中用于模拟输入的一种方法。它可以向指定的元素或当前活动的元素发送键盘输入,如文本、特殊字符、组合键等。
下面代码模拟用户通过键盘向邮箱地址中输入一个数字。
driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys(Keys.NUMPAD3)
Keys.NUMPAD3 表示从键盘输入数字 3
下面模拟操作 tab 键和 enter 键
driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys('[email protected]')
输入邮箱
driver.find_element_by_xpath('//form[@id="login"]/input[2]'). send_keys('12345678')
输入密码
driver.find_element_by_xpath('//form[@id="login"]/input[2]'). send_keys(Keys.TAB)
按下 tab 键
driver.find_element_by_xpath('//form[@id="login"]/button').send_keys(Keys.ENTER)
按下回车键
通过上面的代码能够看出,输入邮箱和密码之后,按下 tab 键,操作会切换到登陆按钮上,然后在登陆按钮上模拟用户按下 enter 键。
当然这样的操作需要按业务的顺序来的,否则会出错。
注意事项:
在 web 页面使用键盘除了上面的操作之外,还可能会有其他操作,比如组合键。
接下来,通过代码模拟用户在界面输入邮箱地址之后,使用 ctrl+a 的方式,将其全选, 然后在使用 ctrl+c 的方式将内容复制出来,登陆成功后,将复制的内容粘贴到创意列表的标题中。代码如下:
driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys('[email protected]')
输入邮箱地址
driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys(Keys.CONTROL,'a')
将输入的字符串使用 ctrl+a 键全选
driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys(Keys.CONTROL,'c')
在按下 ctrl+c,将全选的内容复制到剪切板
driver.find_element_by_xpath('//form[@id="login"]/input[2]'). send_keys('12345678')
输入密码
driver.find_element_by_xpath('//button[contains(text(),"登录 ")]').click()
登陆
#sleep(2)
driver.implicitly_wait(3)
driver.find_element_by_css_selector('#dashboard-menu > li:nth-child(2) > a:nth-child(1)').click()
点击待审核管理
driver.find_element_by_css_selector('#input01').send_keys(Key s.CONTROL,'v')
在搜索栏中的标题输入框中,用 ctrl+v 粘贴到输入框