首先,谢谢虫师博客的分享http://www.cnblogs.com/fnng/p/3183777.html
在此博客基础上,自学,在此记录遇到的每个小问题以及细节如何实现。
今天补上昨天学习的鼠标事件。
对于鼠标事件,借鉴虫师老师介绍的ActinChains模块加载。
from selenium.webdriver.common.action_chains import ActionChains
测试案例:
1) 实现百度云的登录
2) 鼠标双击“网盘”(百度云登录成功后,有网盘的table显示)
3) 鼠标右键“通知”(百度云登录成功后,有通知的table显示)
本文就实现的百度云登录成功后,使用鼠标双击和鼠标右键对测试对象的操作如何实现,进行详细说明。
1.如何获得find_elment_by_xpath()中的xpath?
选择需要测试的对象,右键选择‘审查元素’,然后会出现如下显示的灰色部分
<a class="app" hidefocus="hideFocus" href="http://pan.baidu.com" target="_self">
<em class="app-icon i-disk"></em>
网盘</a>
接着,选中该部分的html代码,然后鼠标右键选择“copy xPath”选项,这样就完成了对xPath的选择。这样就产生了xPath的内容(//*[@id=’aside’]/ul[2]/li[1]/a) 。这样就做就免去了对xPath实际去取的麻烦操作,同时避免了获取xPath的错误。
另外,注意在find_element_by_xpath(“//*[@id=’aside’]/ul[2]/li[1]/a”) 括号里面的单引号与双引号的使用,不能同时使用单引号或者双引号,这样会报错。
2.鼠标双击“网盘”,定义鼠标双击的变量为double,其实现如下:
double=browser.find_elment_by_xpath("//*[@id='aside']/ul[2]/li[1]/a")
ActionChains(browser).double_click(double).perfom()
3.鼠标右键“通知”,定义鼠标右键的变量为right,其实现如下:
right=browser.find_element_by_xpath("//*[@id='aside']/ul[1]/li[3]/a")
ActionChains(browser).context_click(right).perfom()
4.脚本附上
该脚本的测试功能,主要实现:
1)打开百度云,窗口最大化
2)输入百度云的用户名和密码,自动登录百度云网站
3)打印百度云网站的title
4)打印当前百度云网站的网址
5)鼠标右键选择’通知’
6)鼠标双击选择’网盘’
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import os
import time
browser=webdriver.Chrome()
url='http://yun.baidu.com/'
browser.get(url)
time.sleep(3)
browser.maximize_window()
browser.find_element_by_name("userName").clear()
browser.find_element_by_name("userName").send_keys("alu****")
browser.find_element_by_name("userName").send_keys(Keys.TAB)
time.sleep(2)
browser.find_element_by_name("password").send_keys("******")
browser.find_element_by_name("password").send_keys(Keys.ENTER)
title=browser.title
print ("title is %s"%title)
#browser.find_element_by_class_name("pass-button pass-button-submit").submit()
time.sleep(3)
if title=='百度云——云上的日子 你我共享':
print ("title is OK")
else:
print ("title is NOK")
now_url=browser.current_url
print ("current url is %s"%now_url)
if now_url==url:
print ("login is successfully")
else:
print ("login is failed")
right=browser.find_element_by_xpath("//*[@id='aside']/ul[1]/li[3]/a")
#print (right_click)
ActionChains(browser).context_click(right_click).perform()
time.sleep(4)
double=browser.find_element_by_xpath("//*[@id='aside']/ul[2]/li[1]/a").click()
print (double)
ActionChains(browser).double_click(double).perform()
time.sleep(4)
browser.close()