selenium API和使用

来源:互联网 发布:php 会计做账 编辑:程序博客网 时间:2024/05/24 05:23

五.Selenium的api

1.浏览器操作

from selenium import webdriver #调用webdriver模块

driver=webdriver.Firefox()     #实例化火狐浏览器类

driver.get("http://www.baidu.com") #浏览器输入百度网址

driver.quit()             #关闭并退出浏览器

driver.close()           #退出当前窗口

driver.implicitly_wait(3)  #智能等待(上一步完全完成后,自动结束等待,参数为最大等待时间)

driver.maximize_window()   #浏览器最大化

driver.set_window_size(400,480) #设置浏览器尺寸(默认为当前句柄)

driver.back()                #返回到前一个网页

driver.forward()             #前进一个网页

2.元素定位

driver.find_element_by_id()                 #通过id定位元素

driver.find_element_by_name()                #通过name定位元素

driver.find_element_by_class_name()          #通过class_name定位元素

driver.find_element_by_xpath()  #通过路径(可以为绝对路径或者相对路径)定位元素

driver.find_element_by_link_text()         #通过文字链接定位元素

driver.find_element_by_partial_link_text()  #通过部分文字链接定位元素

driver.find_element_by_tag_name()           #通过标签定位元素

driver.title         #获取当前网页的标题

driver.find_elements_by_xx("")    #获取一组元素

 

 

2.用户行为

driver.find_element_by_id("").clear()   #清除输入框的默认内容

driver.find_element_by_id("").click()   #点击操作

driver.find_element_by_id("").text     #获取元素的文本信息

driver.find_element_by_id("").size     #获取元素的宽高

driver.find_element_by_id("").get_attribute('name') #获取元素的name属性

driver.find_element_by_id("").is_displayed()   #返回True或False 返回元素的结果是否可见

                           

3.鼠标和键盘事件

#引入ActionChains 类

from selenium.webdriver.common.action_chains import ActionChains

#定位到要右击的元素

right =driver.find_element_by_xpath("xx")

#对定位到的元素执行鼠标右键操作

ActionChains(driver).context_click(right).perform()   perform()为执行操作

ActionChains 类鼠标操作的常用方法:

context_click() 右击

double_click() 双击

drag_and_drop() 拖动

 move_to_element() 鼠标悬停在一个元素上

click_and_hold() 按下鼠标左键在一个元素上

context_click() 右键点击一个元素。

                   double_click(on_element)   双击一个元素

                   drag_and_drop(source,target)

在源元素上按下鼠标左键,然后移动到目标元素上释放。

source: 鼠标按下的源元素。

target: 鼠标释放的目标元素。

                   move_to_element()    模拟鼠标移动到一个元素上。

        

在使用键盘按键方法前需要先导入keys 类包。

from selenium.webdriver.common.keys import Keys

下面经常使用到的键盘操作:

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,'a') 全选(Ctrl+A)

send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)

send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)

send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)

 

4.now_url =driver.current_url    #获得前面URL

5.设置等待事件

WebDriverWait()。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。

详细格式如下:

WebDriverWait(driver,timeout, poll_frequency=0.5, ignored_exceptions=None)

driver - WebDriver 的驱动程序(Ie, Firefox, Chrome 或远程)

timeout - 最长超时时间,默认以秒为单位

poll_frequency - 休眠时间的间隔(步长)时间,默认为0.5 秒

ignored_exceptions- 超时后的异常信息,默认情况下抛NoSuchElementException 异常

#WebDriverWait()方法使用

element=WebDriverWait(driver,10).until(lambda drivdriver.find_element_by_id("kw"))

element.send_keys("selenium")

WebDriverWai()一般由unit()或until_not()方法配合使用,下面是unit()和until_not()方法的说明。

until(method, message=’ ’)

调用该方法提供的驱动程序作为一个参数,直到返回值不为False。

until_not(method, message=’ ’)

调用该方法提供的驱动程序作为一个参数,直到返回值为False

1.      多窗口处理

nowhandle=driver.current_window_handle    #获得当前窗口

allhandles=driver.window_handles

forhandle in allhandles:    #循环判断窗口是否为当前窗口

if handle!= nowhandle:

driver.switch_to_window(handle)

2.      alert框处理

#接受警告信息

driver.switch_to_alert().dismiss() #点击取消

driver.switch_to_alert().accept()   #点击确定

driver.switch_to_alert().text   #得到文本信息

driver.switch_to_alert().send_keys(””)   #像alert框发送信息

3.      调用js

Driver.execute_script(“document.getElementById(“元素”).setAttribute(‘属性’,’属性值’)”)

调用js修改元素的属性值
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 滨江道商业街 滨江大道旅游 杭州滨江区邮编 佛山恒大滨江左岸 滨江森林公园门票 上海滨江大道 潮州滨江长廊 麓山滨江实验学校 滨江市属于哪个省 滨江学院教务系统 景瑞天赋滨江 北外滩滨江绿地 碧桂园世纪滨江 杭州滨江垃圾姐街按摩 东莞恒大滨江左岸 上海滨江森林公园附近宾馆 滨江集团股吧 杭州市滨江区 滨江房产集团 002244股票 002244股票行情 002244 南京工程大学滨江学院 武汉万科翡翠滨江 南京信息工程大学滨江学院 浙江中医药大学滨江学院 滨海 盐城滨海 大连滨海路 滨海论坛 滨海新 青岛滨海 滨海市 滨海图书馆 滨海县 潍坊滨海 滨海西站 滨海欲欢 滨海学院 滨海科技馆 滨海机场