标签:
from selenium.webdriver.common.keys import Keys
...
dr.get("http://www.baidu.com")
#输入内容
dr.find_element_by_id("kw").send_keys("seleniumm")
#删除输入内容的最后一个字母,
dr.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
#输入:空格+教程
dr.find_element_by_id("kw").send_keys(Keys.SPACE)
dr.find_element_by_id("kw").send_keys(u"教程")
#ctrl+a全选输入框内容
dr.find_element_by_id("kw").send_keys(Keys.CONTROL,‘a‘)
#ctrl+x剪贴输入框内容
dr.find_element_by_id("kw").send_keys(Keys.CONTROL,‘x‘)
#ctrl+v剪贴输入框内容
dr.find_element_by_id("kw").send_keys(Keys.CONTROL,‘v‘)
#回车键操作
dr.find_element_by_id("su").send_keys(Keys.ENTER)
dr.close()
dr.titledr.current_urldr.find_element_by_id("xx").text
WebDriverWait(driver, timeout,poll_frequency,ignored_exceptions=None).until(method,message)示例:WebDriverWait(dr,5,0.5,None).until(expected_conditions.presence_of_element_located((By.ID,"kw1")),message=‘test‘)解释:A.WebDriverWait():在设置时间内,默认间隔一段时间检测一次当前页面元素是否存在,若超过当前指定时间检测不到则抛出异常;B.driver:webdriver的浏览器驱动,ie、firefox、chromeaC.timeout:最长超时时间,以秒为单位D.poll_frequency:休眠间隔时间-步长,默认0.5秒E.ignored_exceptions:超时后异常信息,默认抛出NoSuchElementException异常F.until(method,message): 调用该方法提供的驱动作为一个参数,直到返回值为TrueG.until_not(method,message):调用该方法提供的驱动作为一个参数,直到返回值为FalseH.expected_conditions类提供的预期条件实现有:title_is:判断标题是否是xxtitle_contains:判断标题是否包含xxpresence_of_element_located:元素是否存在
visibility_of_element_located:元素是否存在
visibility_of:是否可见
presence_of_all_elements_located:判断一组元素是否存在
text_to_be_present_in_element:判断元素是否有xx文本信息
text_to_be_present_in_element_value:判断元素值是否有xx文本信息
frame_to_be_available_and_switch_to_it:表单是否可见,并切换到该表单
invisibility_of_element_located:判断元素是否隐藏element_to_be_clickable:判断元素是否点击,它处于可见和启动状态staleness_of:等到一个元素不再依附于DOMelement_to_be_selected:被选中的元素element_located_to_be_selected:一个期望的元素位于被选中element_selection_state_to_be:一个期望检查如果给定元素被选中element_located_selection_state_to_be:期望找到一个元素并检查是否是选择状态alert_is_present:预期一个警告信息
<style type="text/css">
body{font-size:12px; font-family:Tahoma;}
.checkbox{vertical-align:middle; margin-top:0;}
</style>
<body>
<input class="checkbox" type="checkbox" />元旦
<input type="checkbox" name="test" />圣诞节
<input type="checkbox" name="test" />股市
<input type="checkbox" name="test" />阿凡达
<input type="checkbox" name="test" />十月围城
<input type="checkbox" name="test" />水价上调
<input type="button" value="检测" id="btn" />
</body>
- from selenium import webdriver
dr=webdriver.Firefox()
dr.get("D:\\workspace\\pySelenium\\resources\\checkbox.htm")
#使用tagname方式选择页面上所有tagname为input的元素
select_tagname=dr.find_elements_by_tag_name("input")
#使用xpath方式选择页面上所有tagname为input的元素
select_xpath=dr.find_elements_by_xpath("//input[@type=‘checkbox‘]")
#使用css_select方式选择页面上所有tagname为input的元素
select_css=dr.find_elements_by_css_selector(‘input[type=checkbox]‘)
for i in select_tagname:
#循环对每个input元素进行点击选中操作
if i.get_attribute("type")==‘checkbox‘:
i.click()
for j in select_xpath:
#循环对每个input元素进行点击取消操作
j.click()
for k in select_css:
#循环对每个input元素进行点击选中操作
k.click()
#打印出checkbox的个数
print ‘----页面上checkbox的个数为:‘,len(select_css)
#使用pop()获取1组元素的第几个元素
select_css.pop(0).click() #第一个
select_css.pop(1).click() #第二个
select_css.pop().click() #最后一个
select_css.pop(-1).click() #最后一个
select_css.pop(-2).click() #倒数第二个
dr.close()
<html>
<body>
<frameset>
<h3>frame</h3>
<iframe id=‘frameid‘ name=‘frameName‘ width="800" height="500" src="http://www.baidu.com"/>
</frameset>
</body>
</html>
dr.get("D:\\workspace\\pySelenium\\resources\\frame.htm")
dr.switch_to_frame("frameid") #通过frame的id进入iframe
#dr.switch_to_frame("frameName") #通过frame的name进入iframe
#下面可以对frame进行操作了
dr.find_element_by_id("kw").send_keys("selenium")
dr.find_element_by_id("su").click()
dr.switch_to_default_content() #退出当前frame返回上一层
dr.get("D:\\workspace\\pySelenium\\resources\\frame.htm")
#定位到frame页面元素
framepath=dr.find_element_by_class_name("frameClassname")
dr.switch_to_frame(framepath) #通过frame页面对象进入iframe
#下面可以对frame进行操作了
dr.find_element_by_id("kw").send_keys("selenium")
dr.find_element_by_id("su").click()
dr.switch_to_default_content() #退出当前frame返回上一层
dr.get("http://www.baidu.com")
current_handle=dr.current_window_handle #获取百度首页窗口句柄
index_login=dr.find_element_by_xpath("//div[@id=‘u1‘]/a[@class=‘lb‘]") #获取登录按钮对象
index_login.click() #点击登录
dr.implicitly_wait(5)
dr.find_element_by_class_name("pass-reglink").click() #点击立即注册按钮
all_handles=dr.window_handles #获取所有打开窗口句柄
for handle in all_handles:
if handle==current_handle:
dr.switch_to_window(handle)
‘‘‘
...对首页窗口进行操作
‘‘‘
print ‘----首页页面title:‘,dr.title
for handle in all_handles:
if handle!=current_handle:
dr.switch_to_window(handle)
‘‘‘
...对注册窗口进行操作
‘‘‘
print ‘----注册页面title:‘,dr.title
dr.get("http://www.baidu.com")
set_link=dr.find_element_by_xpath("//div[@id=‘u1‘]/a[@class=‘pf‘]") #找到设置链接元素
ActionChains(dr).move_to_element(set_link).perform() #鼠标移动到设置上
dr.find_element_by_xpath("//a[@class=‘setpref‘]").click() #点击搜索设置链接
time.sleep(3)
#加等待时间 等按钮可用,否则会报错save_set=dr.find_element_by_css_selector("#gxszButton > a.prefpanelgo")#获取保存设置按钮
save_set.click() #点击保存设置按钮
alert=dr.switch_to_alert()
#进入alertprint ‘----弹出alert中内容为:‘,alert.text #打印对话框里的文字内容
alert.accept() #对话框里点击alert中确定按钮
#alert.dismiss() #对话框里点击取消按钮
#alert.send_keys("对话框中输入的内容") #在对话框里输入内容
dr.get("D:\\workspace\\pySelenium\\resources\\upload.htm")
loadFile=dr.find_element_by_name("filebutton") # 获取上传文件input元素节点
loadFile.send_keys("D:\\workspace\\pySelenium\\resources\\frame.htm") #输入上传文件地址来实现上传
loadFile=dr.find_element_by_name("filebutton") # 获取上传按钮
loadFile.click()
#点击上传按钮,弹出上传对话框os.system("D:\\autoItFile.exe")
#调用autoIt生成的exe文件,实现导入
ffp=webdriver.FirefoxProfile()
ffp.set_preference("browser.download.folderList",2) #0:代表下载到浏览器默认路径下;2:下载到指定目录
ffp.set_preference("browser.download.manager.showWhenStarting",False) #是否显示开始:True:显示;False:不显示
ffp.set_preference("browser.download.dir", os.getcwd()) #指定下载文件目录,os.getcwd()无参数,返回当前目录
# ffp.set_preference("browser.helperApps.neverAsk.saveToDisk","application/octet-stream")#下载文件类型,
#指定下载页面的content-type值,application/octet-stream为文件类型,http-content-type常用对照表搜索百度
dr=webdriver.Firefox(firefox_profile=ffp)
dr.get("https://pypi.python.org/pypi/selenium#downloads")
dr.find_element_by_xpath("//div[@id=‘content‘]/div[3]/table/tbody/tr[3]/td[1]/span/a[1]").click()
#接下来使用autoIt实现
num=1
dr.get("http://www.baidu.com")
cookies=dr.get_cookies() #获取cookie的所有信息
for ck in cookies:
print ‘----所有cookie‘,num,‘:‘,ck #打印cookie的所有信息
num=num+1
print ‘----按name查cookie:‘,dr.get_cookie("PSTM") #通过cookie的name获取cookie信息
dr.add_cookie({‘name‘:‘hello‘,‘value‘:‘123456789‘}) #向name和value添加会话信息
cookies2=dr.get_cookies() #重新获取cookie的所有信息
for ck2 in cookies2:
if ck2[‘name‘]==‘hello‘:
print "----加入的cookie信息:%s-->%s",(ck2[‘name‘],ck2[‘value‘])
dr.get("http://www.baidu.com")
dr.find_element_by_id("kw").send_keys("selenium")
dr.find_element_by_id("su").click()
js="var q=document.documentElement.scrollTop=1000"
#滚动条滚到最下面dr.execute_script(js)
time.sleep(4)
js2="var q=document.documentElement.scrollTop=0"
#滚动条滚到页面顶dr.execute_script(js2)
dr.get("http://www.baidu.com")
try:
dr.find_element_by_id("kw1").send_keys("selenium")
dr.find_element_by_id("su").click()
except NoSuchElementException,msg:
dr.get_screenshot_as_file("d:\\error.jpg")
#截图输出到d盘print msg
dr.close()
import random
randnum=random.randint(1000,9999)
print "----生成随机数为:",randnum
input_num=input(u"请输入验证码:")
print "----输入验证码为:",input_num
if input_num==randnum:
print"随机数正确,登录成功"
elif input_num==1234:
print"输入正确,登录成功"
else:
print "登录失败"
标签:
原文地址:http://www.cnblogs.com/georgelei/p/4761956.html