鼠标
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')