提升之路--从0开始学web自动化(5)--鼠标,键盘对页面元素操作

鼠标

1,从selenium.webdriver导入Actionchains类

from selenium.webdriver import ActionChains

2,从Actionchains类生成对象,参数输入浏览器对象

mouse = ActionChains(browser)

3,找到鼠标需要使用的元素,进行鼠标操作

setting = browser.find_element(By.XPATH, '//*[@id="s-usersetting-top"]')

ActionChains类里的方法都要加上perform()方法才能生效

-悬停

鼠标移动到某个元素上停止不动

mouse.move_to_element(setting).perform()

-点击

mouse.click(el).perform()

也可以使用el.click()进行元素的点击操作,但是限制比较多,通常使用在点击链接(a标签),按钮(btn)操作,selenium会自动校验是不是这些标签,有的元素不支持直接使用click()方法

而使用ActionChains去操作点击,表示在全局中鼠标的点击事件,更底层的操作

当我们发现元素不能直接使用click()方法直接点击的时候,就可以使用ActionChains去操作鼠标点击

当发现以上2种方法都不能对元素进行点击的时候.就要用js代码进行操作

-双击

快速点击鼠标左键2次

#鼠标双击,记得加perform()表示执行操作
        mouse.double_click(el).perform()

-右击

鼠标右击某个元素

# 鼠标右击,记得加perform()表示执行操作
        mouse.context_click(img).perform()

-拖动

把元素拖动到另一个元素上

拖动需要传入2个参数,起始元素,结束元素

mouse.drag_and_drop("开始元素","结束元素").perform()

用户输入

-send_keys()

输入框操作,可以传入多个参数

-单/多选

找到元素直接点击

 #选择框
        browser.find_element(By.XPATH,'//input[@value="a"]').click()

-下拉选项

   #下拉框
        # browser.find_element("name","myselect").click()
        # time.sleep(3)
        browser.find_element(By.XPATH,'//option[text()="选项3"]').click()

可以先找到选择框进行点击,再点击里面的元素

也可以直接点击选择框里的元素,因为select和option是一起加载的

如果当以上方法都不能对下拉框进行操作的时候,就要使用Select类里的方法

-导入Select类

from selenium.webdriver.support.select import Select
Select(el).select_by_visible_text(value)

 传入想要查找的选项作为参数

快捷键

1,从selenium.webdriver导入Keys类

from selenium.webdriver import ActionChains,Keys

2,send_keys()里面传入按键参数,可以是位置不定长参数,要按照顺序

单个按键  

回车键

browser.find_element(By.ID,"kw").send_keys("柠檬班",Keys.ENTER)

组合键

复制粘贴 ctrl+c  ctrl+v

先按住ctrl 再按c 然后松开ctrl

-得到一个ActionChains对象

#得到一个ActionChains的对象
        actions = ActionChains(browser)

-找到要复制内容的输入框,如果想复制输入框里的内容,需要点击进入输入框,不然就会直接选取页面全部元素进行复制

browser.find_element(By.ID, "kw").click()

如果输入框里没有内容,就要先输入内容,输入内容后不做操作,光标仍然会停留输入框,可以进行复制粘贴操作

browser.find_element(By.ID,"kw").send_keys("柠檬班")

-使用ctrl+a全选输入框的内容,按ctrl+c,最后ctrl+v,使用了ActionChains类的方法,所以要加perform()

     #复制/粘贴
        #得到一个ActionChains的对象
        actions = ActionChains(browser)
        browser.find_element(By.ID, "kw").click()
        #先按住ctrl 再按v,最后松开ctrl
        actions.key_down(Keys.CONTROL).send_keys("a").key_up(Keys.CONTROL).perform()
        actions.key_down(Keys.CONTROL).send_keys("c").key_up(Keys.CONTROL).perform()
        actions.key_down(Keys.CONTROL).send_keys("v").key_up(Keys.CONTROL).perform()
        actions.key_down(Keys.CONTROL).send_keys("v").key_up(Keys.CONTROL).perform()

在元素内直接使用send_keys

 browser.find_element(By.ID, "kw").send_keys(Keys.CONTROL,'v')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值