美文网首页
selenium模拟事件

selenium模拟事件

作者: Chaweys | 来源:发表于2021-04-04 23:22 被阅读0次

selenium模拟事件
(1)、鼠标模拟事件
from selenium.webdriver.common.action_chains improt ActionChains
执行原理:
调用ActionChains的方法事不会立即执行,会将所有的按顺序放在一个队列里,当调用perform()方法时,队列中的事件会依次执行。

鼠标事件的常用方法:
ActionChains(driver).方法().perform()
click(element)             单击鼠标左键
context_click(element)     单击鼠标右键
double_click(element)      双击鼠标左键
move_to_element(element)   鼠标移动到某个元素
element.send_keys(keys)    发送某个词到当前焦点元素

click_and_hold(element)       点击鼠标左键,不松开
release(element)              在某个元素位置松开鼠标左键
key_down(value,element)       按下某个键盘上的键
key_up(value,element)         松开某个键
drag_and_drop(source,traget)  拖曳到某个元素然后松开
drag_and_drop_by_offset(source,xoffset,yoffset)       拖曳到某个坐标然后松开
move_by_offset(xoffset,yoffset)                       鼠标从当前位置移动到某个坐标
move_to_element_by_offset(to_element,xoffset,yoffset) 移动到距某个元素(左上角坐标)多少距离的位置
send_keys_to_element(element,keys_to_send)            发送某个键到指定元素


距离:
鼠标事件之菜单栏hove弹出
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver=webdriver.Chrome()
driver.get("http://xdclass.net")
driver.maximize_window()
menu_element=driver.find_element_by_css_selector("#app > div > div.main > div.banner.w > div.l_course_list > ul > li:nth-child(1)")

#鼠标移动到该指定的menu_element元素上
ActionChains(driver).move_to_element(menu_element).perform()
#对鼠标移动之后出现的元素定位后点击操作
sub_menu_element=driver.find_element_by_css_selector("#app > div > div.main > div.banner.w > div.innerbox > div.base > div.sort > a:nth-child(2)")
sub_menu_element.click()
菜单栏hover弹出.png

举例2:
查找登录框-》输入用户名和密码-》触发登录-》判断登录是否成功-》打印结果


from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver=webdriver.Chrome()
driver.get("http://xdclass.net")
driver.maximize_window()
driver.implicitly_wait(5)

login_element=driver.find_element_by_css_selector("#app > div > div:nth-child(1) > div.header > div.r_userinfo.f_r > div.login > span:nth-child(2)")
#对登录按钮触发点击事件,也可以直接调用 login_element.click()
ActionChains(driver).click(login_element).perform()

#定位输入用户名和密码输入框
#注入输入框输入值之前最好先清理
driver.find_element_by_css_selector("[type='text']").clear()
driver.find_element_by_css_selector("[type='text']").send_keys('13045890834')
driver.find_element_by_css_selector("[type='password']").clear()
driver.find_element_by_css_selector("[type='password']").send_keys('hdc@328216')
driver.find_element_by_class_name("btn").click()

#鼠标移动至登录之后的用户头像
user_info_element=driver.find_element_by_xpath('//*[@id="app"]/div/div[1]/div[2]/div[4]/div[5]/img')
ActionChains(driver).move_to_element(user_info_element).perform()

#判断登录是否成功
#获取登录之后的用户名称
user_name_element=driver.find_element_by_xpath('//*[@id="app"]/div/div[1]/div[2]/div[6]/div/div/div[1]/p')
name=user_name_element.text   #每个元素都可调用element.text 获得其文本值
if name == 'hudechao':
    print('login success')
else:

相关文章

网友评论

      本文标题:selenium模拟事件

      本文链接:https://www.haomeiwen.com/subject/lrkrkltx.html