当前位置: 移动技术网 > IT编程>脚本编程>Python > python+selenium自动化(七)__键盘、鼠标操作及下拉框

python+selenium自动化(七)__键盘、鼠标操作及下拉框

2020年07月18日  | 移动技术网IT编程  | 我要评论

在自动化测试中,有时使用鼠标或键盘操作确实会更加方便,但是不是必须的情况下不推荐使用鼠标操作,因为鼠标操作时不能移动鼠标,否则会报错,本节主要介绍鼠标、键盘操作

一、下拉框选择

#Select的主要用法有三种
#1.以text文本值来查找匹配的元素并选择select_by_visible_text(self, text)    选择代理电话
Select(driver.find_element_by_xpath("//*[@name='param' and @class='select']")).select_by_visible_text("代理电话")

#2.以value属性值来查找该option并选择select_by_value(self, value)    选择身份证号
Select(driver.find_element_by_xpath("//*[@name='param' and @class='select']"))..select_by_value("agent_id_card")

#3.以index属性值来查找匹配的元素并选择select_by_index(self, index)     选择代理名称
Select(driver.find_element_by_xpath("//*[@name='param' and @class='select']")).select_by_value("agent_id_card")

#4.选择第一个option 选项first_selected_option(self)----使用条件需要默认选中不是第一条
Select(driver.find_element_by_xpath("//*[@name='param' and @class='select']")).first_selected_option()

二、键盘操作

'''
常用的键盘操作主要有:
    send_keys(keysToSend):发送文本至警告框
    send_keys(Keys.BACK_SPACE) = BackSpace
    send_keys(Keys.SPACE) = Space
    send_keys(Keys.TAB) = Tab
    send_keys(Keys.ESCAPE) = Esc
    send_keys(Keys.ENTER) = Enter
    send_keys(Keys.CONTROL,‘v’) = control + v
    send_keys(Keys.CONTROL,‘a’) = Ctrl+A
    send_keys(Keys.F1) = 键盘F1
'''
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import datetime,time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.implicitly_wait(10)
#键盘全选
driver.find_element_by_id("kw").send_keys("python")
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"a")
time.sleep(1)
#键盘复制
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"c")
time.sleep(1)
#清除
driver.find_element_by_id("kw").clear()
time.sleep(1)
#键盘粘贴
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"v")
time.sleep(1)
#键盘 确认
driver.find_element_by_id("su").send_keys(Keys.ENTER)

三、鼠标操作

'''
有时需要在页面上模拟鼠标操作,比如:单击,双击,右键,按住,拖拽等
可以导入ActionChains类:selenium.webdriver.common.action_chains.ActionChains
使用ActionChains(driver).XXX调用对应节点的行为

click(element):单击某个节点;
click_and_hold(element):单击某个节点并按住不放;
context_click(element):右键单击某个节点;
double_click(element):双击某个节点;
drag_and_drop(source, target):按住某个节点拖拽到另一个节点;
drag_and_drop_by_offset(source, xoffset, yoffset):按住节点按偏移拖拽
key_down:按下特殊键,只能用(Control, Alt and Shift),比如Ctrl + C
ActionChains(driver).key_down(Keys.CONTROL).send_keys(‘c’).key_up(Keys.CONTROL).perform();
key_up:释放特殊键;
move_by_offset(xoffset, yoffset):按偏移移动鼠标;
move_to_element(element):鼠标移动到某个节点的位置;
move_to_element_with_offset(element, xoffset, yoffset):鼠标移到某个节点并偏移;
pause(second):暂停所有的输入多少秒;
perform():执行操作,可以设置多个操作,调用perform()
才会执行;
release():释放鼠标按钮
reset_actions:重置操作
send_keys(keys_to_send):模拟按键,比如输入框节点.send_keys(Keys.CONTROL,’a’)
全选输入框内容,输入框节点.send_keys(Keys.CONTROL,’x’)剪切,模拟回退:
节点.send_keys(keys.RETURN);或者直接设置输入框内容:输入框节点.send_keys(‘xxx’);
send_keys_to_element(element, *keys_to_send):和send_keys类似;
'''
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("https://passport.ctrip.com/user/login")
driver.maximize_window()
WebDriverWait(driver,20).until(EC.presence_of_element_located((By.ID,"nloginname")))
kw = driver.find_element_by_id("nsubmit")
#1.单击元素
ActionChains(driver).click(kw).perform()
#2.右击元素
ActionChains(driver).context_click(kw).perform()
#3.悬停元素
ActionChains(driver).move_to_element(kw).perform()

#结合键盘操作,输入账户名、密码并点击确认
username = driver.find_element_by_id("nloginname")
ac = ActionChains(driver)
ac.click(username).send_keys("123456789").send_keys(Keys.TAB).send_keys("123456789").perform()
time.sleep(2)
driver.find_element_by_id("nsubmit").click()

 

本文地址:https://blog.csdn.net/qq_44739114/article/details/107383779

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网