基於python的selenium定位和操做頁面元素的一些方法

1. 元素定位

1.1 Chrome瀏覽器怎麼獲取頁面元素

 

 

 

1.2 driver.find_element_by_id()

說明:用頁面id屬性值定位元素javascript

 

1.2.1 例子

from selenium import webdriver
driver=webdriver.Chrome()#經過谷歌瀏覽器驅動
driver.get('http://www.baidu.com')#打開百度網頁
ele=driver.find_element_by_id("kw")#定位到百度頁面的輸入框css

1.3 driver.find_element_by_xpath()

說明:經過頁面的xpath值定位元素html

 

1.3.1 Chrome瀏覽器怎麼獲取xpath

右擊鼠標,能夠複製xpathjava

 

 

1.3.2 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
ele=driver.find_element_by_xpath("//*[@id=\"kw\"]")python

 

1.4 driver.find_element_by_class_name()

說明:經過頁面的class值定位元素web

 

1.4.1 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
ele=driver.find_element_by_class_name("s_ipt")瀏覽器

1.5 driver.find_element_by_name()

說明:以頁面的name屬性定位元素cookie

 

1.5.1 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_name("wd")post

1.6 driver.find_element_by_link_text()

說明:經過頁面上的連接定位元素測試

 

1.6.1 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_link_text("新聞")

1.7 driver.find_element_by_partial_link_text()

說明:進行超連接的模糊查詢

 

1.7.1 例子

from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_partial_link_text("頻")
time.sleep(3)
ele.click()

1.8 find_element_by_css_selector()

說明:經過css選擇器定位

1.8.1 例子

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_css_selector("#kw").send_keys("selenium2")

 

 

 

 

 

簡單的元素操做

 

2.1 send_keys()

說明:在input的輸入框內輸入值

2.1.1 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
ele=driver.find_element_by_id("kw")#定位到元素
ele.send_keys("selenium")#以id定位元素,而後在輸入框內輸入selenium

2.2 click()

說明:點擊頁面按鈕

2.2.1 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
ele=driver.find_element_by_id("kw")
ele.send_keys("selenium")#以id定位元素,而後在輸入框內輸入selenium
key=driver.find_element_by_id("su")
key.click()#定位元素而後點擊

 

2.3 clear()

說明:清除input輸入框內的輸入內容

2.3.1 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
ele=driver.find_element_by_id("kw")
ele.send_keys("selenium")#以id定位元素,而後在輸入框內輸入selenium
key=driver.find_element_by_id("su")
key.click()#定位元素而後點擊
ele.clear()#清除輸入空內的內容

2.4 back()

說明:回到前一個頁面

2.4.1 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.get("http://www.sina.com")#同一個頁面中從百度跳到新浪
driver.back()#重新浪返回百度頁面

2.5 forward()

說明:向前進一個頁面

2.5.1 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.get("http://www.sina.com")#同一個頁面中從百度跳到新浪
driver.back()#重新浪返回百度頁面
driver.forward()#前進一個頁面

2.6 refresh()

說明:刷新頁面

2.6.1 例子

from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get("http://www.sina.com")
time.sleep(5)#睡5秒
driver.refresh()#刷新頁面

 

2.7 submit()

說明:提交,只有表單的時候才能用

2.7.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_id("kw")
ele.send_keys("selenium")#以id定位元素,而後在輸入框內輸入selenium
ele.submit()

2.8 title

說明:獲取頁面的標題

 

2.8.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
title=driver.title
print(title)

2.9 current_url

說明:獲得當前頁面的url

2.9.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
url=driver.current_url
print(url)

2.10 quit

說明:退出程序運行

2.10.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.quit()#退出運行

2.11 Text

說明:獲取頁面超連接的文本值

2.11.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_link_text("登陸")
text=ele.text
print(text)

2.12 tag_name

說明:頁面標籤類型

 

2.12.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_link_text("登陸")
tag=ele.tag_name#頁面標籤類型
print(tag)
driver.quit()

2.13 is_enabled()

說明:頁面元素是否可編輯

2.13.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_link_text("登陸")
tag=ele.is_enabled()
print(tag)
driver.quit()

 

2.14 isDisplayed()

說明:判斷元素是否用戶可見(有些元素頁面不可見,可是存在代碼中)

2.14.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_link_text("登陸")
tag=ele.is_displayed()
print(tag)
driver.quit()

2.15 get_attribute()

說明:獲得頁面屬性對應的值

 

2.15.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_id("kw")
tag=ele.get_attribute("name")#獲得name屬性對應的值
print(tag)
driver.quit()

2.16 set_window_size()

說明:設置瀏覽器窗口大小

2.16.1 例子

_Author_ = 'jc'
from selenium import webdriver
driver = webdriver.Chrome()
#打開12306網址
driver.get('https://www.12306.cn/index/')
#設置瀏覽器窗口大小
driver.set_window_size(800,800)
#driver.quit()

2.17 maximize_window()

說明:窗口最大化

2.17.1 例子

from selenium import webdriver
driver = webdriver.Chrome()
#窗口最大化
driver.maximize_window()

2.18 Size

說明:返回元素的大小

2.18.1 例子

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
a = driver.find_element_by_css_selector("#kw").size
print(a)
driver.quit()

鼠標事件

3.1 context_click

說明:右擊操做

3.1.1 例子

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
right_click = driver.find_element_by_css_selector("#kw")#定位到須要右擊的元素
ActionChains(driver).context_click(right_click).perform()#右擊,不加perform不顯示右擊的內容

 

3.2 move_to_element

說明:鼠標懸停

3.2.1 例子

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
above = driver.find_element_by_link_text("設置")#定位到鼠標懸停的元素
ActionChains(driver).move_to_element(above).perform()

 

 

 

3.3 double_click

說明:雙擊操做

3.4 drag_and_drop

說明:元素拖動

3.4.1 例子

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
above = driver.find_element_by_link_text("新聞")#定位到原元素
target = driver.find_element_by_id("kw")#定位到目標元素
ActionChains(driver).drag_and_drop(above,target).perform()#把原元素拖動到目標元素上去

鍵盤事件

4.1 BACK_SPACE

說明:刪除操做

4.1.1 例子

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import  time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
element = driver.find_element_by_id("kw")
element.send_keys("selenium")
time.sleep(2)
element.send_keys(Keys.BACK_SPACE)#刪除操做,刪除多輸入的m

4.2 SPACE

說明:輸入空格

4.2.1 例子

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
element = driver.find_element_by_id("kw")
element.send_keys("selenium")
element.send_keys(Keys.SPACE)#輸入空格
element.send_keys("ok")

4.3 Keys.CONTROL,"a"

說明:全選輸入框內容

同理:Keys.CONTROL,"v" 粘貼內容到輸入框

Keys.CONTROL,"x"  剪貼輸入框內容

 

 

4.3.1 例子

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
element = driver.find_element_by_id("kw")
element.send_keys("selenium")
element.send_keys(Keys.CONTROL,"a")#ctrl + a ,全選輸入框內容

 

4.4 Keys.ENTER

說明:回車操做

4.4.1 例子

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
element = driver.find_element_by_id("kw")
element.send_keys("selenium")
driver.find_element_by_id("su").send_keys(Keys.ENTER)#回車

設置等待

5.1 顯示等待

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("http://www.126.com")
print(time.ctime())

for i in range(10):

    try:
         el = driver.find_element_by_class_name('j-inputtext dlpwd')
         if el.is_displayed():#元素是否存在
            break #存在就跳出循環
       except:pass
    time.sleep(1)#否則睡一秒繼續找
else:
    print('time out')#循環完了找不到就打印超時
    print(time.ctime())#打印當前時間
    driver.close()

 

5.2 implicitly_wait()

說明:implicitly_wait():隱式等待 5 當使用了隱士等待執行測試的時候,若是 WebDriver沒有在 DOM中找到元素,將繼續等待,超出設定時間後則拋出找不到元素的異常 6 換句話說,當查找元素或元素並無當即出現的時候,隱式等待將等待一段時間再查找 DOM,默認的時間是0 7 一旦設置了隱式等待,則它存在整個 WebDriver 對象實例的聲明週期中,隱式的等到會讓一個正常響應的應用的測試變慢, 8 它將會在尋找每一個元素的時候都進行等待,這樣會增長整個測試執行的時間。

5.2.1 例子

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time

driver = webdriver.Chrome()
driver.implicitly_wait(10)#設置了全局查找元素10秒
driver.get("http://www.baidu.com")
print(time.ctime())
try:
    driver.find_element_by_id('2kw').send_keys('selenium')
except NoSuchElementException as e: #沒有找到元素就拋出沒有找到的異常
    print(e)
finally:
    print(time.ctime())
    driver.close()

5.3 Sleep休眠方式

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
time.sleep(2)
driver.find_element_by_id('kw').send_keys("postman")
time.sleep(3)
driver.find_element_by_id('su').click()
time.sleep(2)
driver.quit()

定位一組元素

from selenium import webdriver
import time
driver = webdriver.Chrome()
#設置瀏覽器窗口大小
driver.maximize_window()
#打開12306網址
driver.get('https://www.12306.cn/index/')
url2 = driver.current_url
time.sleep(3)
url1 = driver.current_url
#查找登陸的連接
driver.find_element_by_xpath('//*[@id="J-header-login"]/a[1]').click()
time.sleep(3)
#跳轉到帳號登陸
driver.find_element_by_xpath('/html/body/div[2]/div[2]/ul/li[2]/a').click()
time.sleep(5)
#帳號框輸入帳號

eles = driver.find_elements_by_tag_name('input')#找出頁面上的全部input輸入框,比單個定位element後多了個s
for i in eles:
    if i.get_attribute('class') == 'input':#若是輸入框的class屬性等於input就執行下一步
        i.send_keys('selenium')
        time.sleep(2)

 

多表單切換(iframe

selenuim2自動化測試實戰基於python語言(p104

多窗口切換

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
handle = driver.current_window_handle #獲取當前頁面(百度搜索頁面)的句柄
driver.find_element_by_link_text('登陸').click()
driver.find_element_by_link_text('當即註冊').click()
handles = driver.window_handles#獲取當前打開頁面全部的句柄

for i in handles:
    if i == handle: #判斷句柄是否爲百度搜索頁面
        driver.switch_to.window(i)#切換到搜索頁面
        driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_4__closeBtn"]').click()#關掉打開的小窗口
        driver.find_element_by_id('kw').send_keys('selenium')
        driver.find_element_by_id('su').click()
        time.sleep(3)
    else:
        driver.switch_to.window(i)#切換到註冊頁面
        driver.find_element_by_name('userName').send_keys('jack')
time.sleep(3)
driver.quit()

警告對話框處理

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele = driver.find_element_by_link_text('設置')
ActionChains(driver).move_to_element(ele).perform()#懸停在設置上
time.sleep(2)
driver.find_element_by_link_text('搜索設置').click()
time.sleep(2)
ele = driver.find_element_by_xpath('//*[@id="gxszButton"]/a[1]')#按下保存設置會跳出javascript的警告對話框
ele.click()
time.sleep(2)
print(driver.switch_to_alert().text)#打印警告對話框的文字
# driver.switch_to_alert().dismiss()#取消警告對話框
# driver.switch_to_alert().send_keys('ik')#發送文本到警告對話框
driver.switch_to_alert().accept()#接受警告

10 操做cookie

10.1 Get_cookie

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
cookie = driver.get_cookies()#h獲取頁面的cookie
print(cookie)

10.2 add_cookie

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.add_cookie({'name':'userName','value':'rudy'})#添加一個cookie值
cookie = driver.get_cookies()#h獲取頁面的cookie
for i in cookie:
    print('%s >> %s' % (i['name'],i['value']))
driver.quit()

10.3  delete_cookie

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.add_cookie({'name':'userName','value':'rudy'})#添加一個cookie值
cookie = driver.get_cookies()#h獲取頁面的cookie
for i in cookie:
    print('%s >> %s' % (i['name'],i['value']))
driver.delete_cookie('userName')#刪除名字爲userName的cookie
cookie2 = driver.get_cookies()
for i in cookie2:
    print('%s >> %s' % (i['name'],i['value']))
driver.quit()

10.4 delete_all_cookies

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.add_cookie({'name':'userName','value':'rudy'})#添加一個cookie值
cookie = driver.get_cookies()#h獲取頁面的cookie
for i in cookie:
    print('%s >> %s' % (i['name'],i['value']))
driver.delete_all_cookies()#刪除全部的cookie
cookie2 = driver.get_cookies()
for i in cookie2:
    print('%s >> %s' % (i['name'],i['value']))
driver.quit()

 

 

11 調用javascript

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get('http://www.baidu.com')

#設置瀏覽器窗口大小
driver.set_window_size(600,600)

#搜索內容
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
sleep(2)

#經過javascript設置瀏覽器窗口的滾動條位置
js='window.scrollTo(100,450);'

#執行script語句
driver.execute_script(js)
sleep(3)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. 元素定位

1.1 Chrome瀏覽器怎麼獲取頁面元素

 

 

 

1.2 driver.find_element_by_id()

說明:用頁面id屬性值定位元素

 

1.2.1 例子

from selenium import webdriver
driver=webdriver.Chrome()#經過谷歌瀏覽器驅動
driver.get('http://www.baidu.com')#打開百度網頁
ele=driver.find_element_by_id("kw")#定位到百度頁面的輸入框

1.3 driver.find_element_by_xpath()

說明:經過頁面的xpath值定位元素

 

1.3.1 Chrome瀏覽器怎麼獲取xpath

右擊鼠標,能夠複製xpath

 

 

1.3.2 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
ele=driver.find_element_by_xpath("//*[@id=\"kw\"]")

 

1.4 driver.find_element_by_class_name()

說明:經過頁面的class值定位元素

 

1.4.1 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
ele=driver.find_element_by_class_name("s_ipt")

1.5 driver.find_element_by_name()

說明:以頁面的name屬性定位元素

 

1.5.1 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_name("wd")

1.6 driver.find_element_by_link_text()

說明:經過頁面上的連接定位元素

 

1.6.1 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_link_text("新聞")

1.7 driver.find_element_by_partial_link_text()

說明:進行超連接的模糊查詢

 

1.7.1 例子

from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_partial_link_text("頻")
time.sleep(3)
ele.click()

1.8 find_element_by_css_selector()

說明:經過css選擇器定位

1.8.1 例子

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_css_selector("#kw").send_keys("selenium2")

 

 

 

 

 

簡單的元素操做

 

2.1 send_keys()

說明:在input的輸入框內輸入值

2.1.1 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
ele=driver.find_element_by_id("kw")#定位到元素
ele.send_keys("selenium")#以id定位元素,而後在輸入框內輸入selenium

2.2 click()

說明:點擊頁面按鈕

2.2.1 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
ele=driver.find_element_by_id("kw")
ele.send_keys("selenium")#以id定位元素,而後在輸入框內輸入selenium
key=driver.find_element_by_id("su")
key.click()#定位元素而後點擊

 

2.3 clear()

說明:清除input輸入框內的輸入內容

2.3.1 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
ele=driver.find_element_by_id("kw")
ele.send_keys("selenium")#以id定位元素,而後在輸入框內輸入selenium
key=driver.find_element_by_id("su")
key.click()#定位元素而後點擊
ele.clear()#清除輸入空內的內容

2.4 back()

說明:回到前一個頁面

2.4.1 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.get("http://www.sina.com")#同一個頁面中從百度跳到新浪
driver.back()#重新浪返回百度頁面

2.5 forward()

說明:向前進一個頁面

2.5.1 例子

from selenium import webdriver
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.get("http://www.sina.com")#同一個頁面中從百度跳到新浪
driver.back()#重新浪返回百度頁面
driver.forward()#前進一個頁面

2.6 refresh()

說明:刷新頁面

2.6.1 例子

from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get("http://www.sina.com")
time.sleep(5)#睡5秒
driver.refresh()#刷新頁面

 

2.7 submit()

說明:提交,只有表單的時候才能用

2.7.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_id("kw")
ele.send_keys("selenium")#以id定位元素,而後在輸入框內輸入selenium
ele.submit()

2.8 title

說明:獲取頁面的標題

 

2.8.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
title=driver.title
print(title)

2.9 current_url

說明:獲得當前頁面的url

2.9.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
url=driver.current_url
print(url)

2.10 quit

說明:退出程序運行

2.10.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.quit()#退出運行

2.11 Text

說明:獲取頁面超連接的文本值

2.11.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_link_text("登陸")
text=ele.text
print(text)

2.12 tag_name

說明:頁面標籤類型

 

2.12.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_link_text("登陸")
tag=ele.tag_name#頁面標籤類型
print(tag)
driver.quit()

2.13 is_enabled()

說明:頁面元素是否可編輯

2.13.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_link_text("登陸")
tag=ele.is_enabled()
print(tag)
driver.quit()

 

2.14 isDisplayed()

說明:判斷元素是否用戶可見(有些元素頁面不可見,可是存在代碼中)

2.14.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_link_text("登陸")
tag=ele.is_displayed()
print(tag)
driver.quit()

2.15 get_attribute()

說明:獲得頁面屬性對應的值

 

2.15.1 例子

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=driver.find_element_by_id("kw")
tag=ele.get_attribute("name")#獲得name屬性對應的值
print(tag)
driver.quit()

2.16 set_window_size()

說明:設置瀏覽器窗口大小

2.16.1 例子

_Author_ = 'jc'
from selenium import webdriver
driver = webdriver.Chrome()
#打開12306網址
driver.get('https://www.12306.cn/index/')
#設置瀏覽器窗口大小
driver.set_window_size(800,800)
#driver.quit()

2.17 maximize_window()

說明:窗口最大化

2.17.1 例子

from selenium import webdriver
driver = webdriver.Chrome()
#窗口最大化
driver.maximize_window()

2.18 Size

說明:返回元素的大小

2.18.1 例子

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
a = driver.find_element_by_css_selector("#kw").size
print(a)
driver.quit()

鼠標事件

3.1 context_click

說明:右擊操做

3.1.1 例子

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
right_click = driver.find_element_by_css_selector("#kw")#定位到須要右擊的元素
ActionChains(driver).context_click(right_click).perform()#右擊,不加perform不顯示右擊的內容

 

3.2 move_to_element

說明:鼠標懸停

3.2.1 例子

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
above = driver.find_element_by_link_text("設置")#定位到鼠標懸停的元素
ActionChains(driver).move_to_element(above).perform()

 

 

 

3.3 double_click

說明:雙擊操做

3.4 drag_and_drop

說明:元素拖動

3.4.1 例子

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
above = driver.find_element_by_link_text("新聞")#定位到原元素
target = driver.find_element_by_id("kw")#定位到目標元素
ActionChains(driver).drag_and_drop(above,target).perform()#把原元素拖動到目標元素上去

鍵盤事件

4.1 BACK_SPACE

說明:刪除操做

4.1.1 例子

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import  time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
element = driver.find_element_by_id("kw")
element.send_keys("selenium")
time.sleep(2)
element.send_keys(Keys.BACK_SPACE)#刪除操做,刪除多輸入的m

4.2 SPACE

說明:輸入空格

4.2.1 例子

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
element = driver.find_element_by_id("kw")
element.send_keys("selenium")
element.send_keys(Keys.SPACE)#輸入空格
element.send_keys("ok")

4.3 Keys.CONTROL,"a"

說明:全選輸入框內容

同理:Keys.CONTROL,"v" 粘貼內容到輸入框

Keys.CONTROL,"x"  剪貼輸入框內容

 

 

4.3.1 例子

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
element = driver.find_element_by_id("kw")
element.send_keys("selenium")
element.send_keys(Keys.CONTROL,"a")#ctrl + a ,全選輸入框內容

 

4.4 Keys.ENTER

說明:回車操做

4.4.1 例子

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
element = driver.find_element_by_id("kw")
element.send_keys("selenium")
driver.find_element_by_id("su").send_keys(Keys.ENTER)#回車

設置等待

5.1 顯示等待

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("http://www.126.com")
print(time.ctime())

for i in range(10):

    try:
        el = driver.find_element_by_class_name('j-inputtext dlpwd')
        if el.is_displayed():#元素是否存在
            break #存在就跳出循環
       except:pass
    time.sleep(1)#否則睡一秒繼續找
else:
    print('time out')#循環完了找不到就打印超時
    print(time.ctime())#打印當前時間
    driver.close()

 

5.2 implicitly_wait()

說明:implicitly_wait():隱式等待 5 當使用了隱士等待執行測試的時候,若是 WebDriver沒有在 DOM中找到元素,將繼續等待,超出設定時間後則拋出找不到元素的異常 6 換句話說,當查找元素或元素並無當即出現的時候,隱式等待將等待一段時間再查找 DOM,默認的時間是0 7 一旦設置了隱式等待,則它存在整個 WebDriver 對象實例的聲明週期中,隱式的等到會讓一個正常響應的應用的測試變慢, 8 它將會在尋找每一個元素的時候都進行等待,這樣會增長整個測試執行的時間。

5.2.1 例子

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time

driver = webdriver.Chrome()
driver.implicitly_wait(10)#設置了全局查找元素10秒
driver.get("http://www.baidu.com")
print(time.ctime())
try:
    driver.find_element_by_id('2kw').send_keys('selenium')
except NoSuchElementException as e: #沒有找到元素就拋出沒有找到的異常
    print(e)
finally:
    print(time.ctime())
    driver.close()

5.3 Sleep休眠方式

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
time.sleep(2)
driver.find_element_by_id('kw').send_keys("postman")
time.sleep(3)
driver.find_element_by_id('su').click()
time.sleep(2)
driver.quit()

定位一組元素

from selenium import webdriver
import time
driver = webdriver.Chrome()
#設置瀏覽器窗口大小
driver.maximize_window()
#打開12306網址
driver.get('https://www.12306.cn/index/')
url2 = driver.current_url
time.sleep(3)
url1 = driver.current_url
#查找登陸的連接
driver.find_element_by_xpath('//*[@id="J-header-login"]/a[1]').click()
time.sleep(3)
#跳轉到帳號登陸
driver.find_element_by_xpath('/html/body/div[2]/div[2]/ul/li[2]/a').click()
time.sleep(5)
#帳號框輸入帳號

eles = driver.find_elements_by_tag_name('input')#找出頁面上的全部input輸入框,比單個定位element後多了個s
for i in eles:
    if i.get_attribute('class') == 'input':#若是輸入框的class屬性等於input就執行下一步
        i.send_keys('selenium')
        time.sleep(2)

 

多表單切換(iframe

selenuim2自動化測試實戰基於python語言(p104

多窗口切換

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
handle = driver.current_window_handle #獲取當前頁面(百度搜索頁面)的句柄
driver.find_element_by_link_text('登陸').click()
driver.find_element_by_link_text('當即註冊').click()
handles = driver.window_handles#獲取當前打開頁面全部的句柄

for i in handles:
    if i == handle: #判斷句柄是否爲百度搜索頁面
        driver.switch_to.window(i)#切換到搜索頁面
        driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_4__closeBtn"]').click()#關掉打開的小窗口
        driver.find_element_by_id('kw').send_keys('selenium')
        driver.find_element_by_id('su').click()
        time.sleep(3)
    else:
        driver.switch_to.window(i)#切換到註冊頁面
        driver.find_element_by_name('userName').send_keys('jack')
time.sleep(3)
driver.quit()

警告對話框處理

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele = driver.find_element_by_link_text('設置')
ActionChains(driver).move_to_element(ele).perform()#懸停在設置上
time.sleep(2)
driver.find_element_by_link_text('搜索設置').click()
time.sleep(2)
ele = driver.find_element_by_xpath('//*[@id="gxszButton"]/a[1]')#按下保存設置會跳出javascript的警告對話框
ele.click()
time.sleep(2)
print(driver.switch_to_alert().text)#打印警告對話框的文字
# driver.switch_to_alert().dismiss()#取消警告對話框
# driver.switch_to_alert().send_keys('ik')#發送文本到警告對話框
driver.switch_to_alert().accept()#接受警告

10 操做cookie

10.1 Get_cookie

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
cookie = driver.get_cookies()#h獲取頁面的cookie
print(cookie)

10.2 add_cookie

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.add_cookie({'name':'userName','value':'rudy'})#添加一個cookie值
cookie = driver.get_cookies()#h獲取頁面的cookie
for i in cookie:
    print('%s >> %s' % (i['name'],i['value']))
driver.quit()

10.3  delete_cookie

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.add_cookie({'name':'userName','value':'rudy'})#添加一個cookie值
cookie = driver.get_cookies()#h獲取頁面的cookie
for i in cookie:
    print('%s >> %s' % (i['name'],i['value']))
driver.delete_cookie('userName')#刪除名字爲userName的cookie
cookie2 = driver.get_cookies()
for i in cookie2:
    print('%s >> %s' % (i['name'],i['value']))
driver.quit()

10.4 delete_all_cookies

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.add_cookie({'name':'userName','value':'rudy'})#添加一個cookie值
cookie = driver.get_cookies()#h獲取頁面的cookie
for i in cookie:
    print('%s >> %s' % (i['name'],i['value']))
driver.delete_all_cookies()#刪除全部的cookie
cookie2 = driver.get_cookies()
for i in cookie2:
    print('%s >> %s' % (i['name'],i['value']))
driver.quit()

 

 

11 調用javascript

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get('http://www.baidu.com')

#設置瀏覽器窗口大小
driver.set_window_size(600,600)

#搜索內容
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
sleep(2)

#經過javascript設置瀏覽器窗口的滾動條位置
js='window.scrollTo(100,450);'

#執行script語句
driver.execute_script(js)
sleep(3)

相關文章
相關標籤/搜索