Python 自動化

非本人編寫? ?原文:https://www.cnblogs.com/jcshuaiashuai/p/10372616.html


1.元素定位

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

1.2driver.find_element_by_id()

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


1.2.1例子

from?selenium?import?webdriver

driver=webdriver.Chrome()#通過谷歌瀏覽器驅(qū)動

driver.get('http://www.baidu.com')#打開百度網(wǎng)頁

ele=driver.find_element_by_id("kw")#定位到百度頁面的輸入框

1.3driver.find_element_by_xpath()

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


1.3.1Chrome瀏覽器怎么獲取xpath值

右擊鼠標,可以復(fù)制xpath值



1.3.2例子

from?selenium?import?webdriver

driver=webdriver.Chrome()

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

ele=driver.find_element_by_xpath("http://*[@id=\"kw\"]")


1.4driver.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.5driver.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.6driver.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.7driver.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.8find_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簡單的元素操作


2.1send_keys()

說明:在input的輸入框內(nèi)輸入值

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定位元素,然后在輸入框內(nèi)輸入selenium

2.2click()

說明:點擊頁面按鈕

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定位元素,然后在輸入框內(nèi)輸入seleniumkey=driver.find_element_by_id("su")

key.click()#定位元素然后點擊


2.3clear()

說明:清除input輸入框內(nèi)的輸入內(nèi)容

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定位元素,然后在輸入框內(nèi)輸入seleniumkey=driver.find_element_by_id("su")

key.click()#定位元素然后點擊ele.clear()#清除輸入空內(nèi)的內(nèi)容

2.4back()

說明:回到前一個頁面

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.5forward()

說明:向前進一個頁面

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.6refresh()

說明:刷新頁面

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.7submit()

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

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定位元素,然后在輸入框內(nèi)輸入seleniumele.submit()

2.8title

說明:獲取頁面的標題


2.8.1例子

from?selenium?import?webdriver

import?time

driver?= webdriver.Chrome()

driver.get("http://www.baidu.com")

title=driver.title

print(title)

2.9current_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.10quit

說明:退出程序運行

2.10.1例子

from?selenium?import?webdriver

import?time

driver = webdriver.Chrome()

driver.get("http://www.baidu.com")

driver.quit()#退出運行

2.11Text

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

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.12tag_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.13is_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.14isDisplayed()

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

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.15get_attribute()

說明:得到頁面屬性對應(yīng)的值


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屬性對應(yīng)的值print(tag)

driver.quit()

2.16set_window_size()

說明:設(shè)置瀏覽器窗口大小

2.16.1例子

_Author_ =?'jc'from?selenium?import?webdriver

driver = webdriver.Chrome()

#打開12306網(wǎng)址driver.get('https://www.12306.cn/index/')

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

#driver.quit()

2.17maximize_window()

說明:窗口最大化

2.17.1例子

from?selenium?import?webdriver

driver = webdriver.Chrome()

#窗口最大化driver.maximize_window()

2.18Size

說明:返回元素的大小

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鼠標事件

3.1context_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不顯示右擊的內(nèi)容


3.2move_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("設(shè)置")#定位到鼠標懸停的元素ActionChains(driver).move_to_element(above).perform()




3.3double_click

說明:雙擊操作

3.4drag_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鍵盤事件

4.1BACK_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.2SPACE

說明:輸入空格

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.3Keys.CONTROL,"a"

說明:全選輸入框內(nèi)容

同理:Keys.CONTROL,"v"?粘貼內(nèi)容到輸入框

Keys.CONTROL,"x"??剪貼輸入框內(nèi)容



4.3.1例子

from?seleniumimport?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 ,全選輸入框內(nèi)容

?

4.4Keys.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設(shè)置等待

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?#存在就跳出循環(huán)???????except:pass????time.sleep(1)#不然睡一秒繼續(xù)找else:

print('time out')#循環(huán)完了找不到就打印超時????print(time.ctime())#打印當前時間????driver.close()


5.2implicitly_wait()

說明:implicitly_wait():隱式等待?5當使用了隱士等待執(zhí)行測試的時候,如果?WebDriver沒有在 DOM中找到元素,將繼續(xù)等待,超出設(shè)定時間后則拋出找不到元素的異常?6換句話說,當查找元素或元素并沒有立即出現(xiàn)的時候,隱式等待將等待一段時間再查找?DOM,默認的時間是0?7一旦設(shè)置了隱式等待,則它存在整個?WebDriver 對象實例的聲明周期中,隱式的等到會讓一個正常響應(yīng)的應(yīng)用的測試變慢,?8它將會在尋找每個元素的時候都進行等待,這樣會增加整個測試執(zhí)行的時間。

5.2.1例子

from?selenium?import?webdriver

from?selenium.common.exceptions?import?NoSuchElementException

import?time

driver = webdriver.Chrome()

driver.implicitly_wait(10)#設(shè)置了全局查找元素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.3Sleep休眠方式

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()

6定位一組元素

from?selenium?import?webdriver

import?time

driver = webdriver.Chrome()

#設(shè)置瀏覽器窗口大小driver.maximize_window()

#打開12306網(wǎng)址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)

#跳轉(zhuǎn)到賬號登錄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后多了個sfor?i?in?eles:

if?i.get_attribute('class') ==?'input':#如果輸入框的class屬性等于input就執(zhí)行下一步????????i.send_keys('selenium')

time.sleep(2)


7多表單切換(iframe

見selenuim2自動化測試實戰(zhàn)基于python語言(p104)

8多窗口切換

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()#關(guān)掉打開的小窗口????????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()

9警告對話框處理

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('設(shè)置')

ActionChains(driver).move_to_element(ele).perform()#懸停在設(shè)置上time.sleep(2)

driver.find_element_by_link_text('搜索設(shè)置').click()

time.sleep(2)

ele = driver.find_element_by_xpath('//*[@id="gxszButton"]/a[1]')#按下保存設(shè)置會跳出javascript的警告對話框ele.click()

time.sleep(2)

print(driver.switch_to_alert().text)#打印警告對話框的文字# driver.switch_to_alert().dismiss()#取消警告對話框# driver.switch_to_alert().send_keys('ik')#發(fā)送文本到警告對話框driver.switch_to_alert().accept()#接受警告

10操作cookie

10.1Get_cookie

from?selenium?import?webdriver

driver = webdriver.Chrome()

driver.get("http://www.baidu.com")

cookie = driver.get_cookies()#h獲取頁面的cookieprint(cookie)

10.2add_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獲取頁面的cookiefor?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獲取頁面的cookiefor?i?in?cookie:

print('%s >> %s'?% (i['name'],i['value']))

driver.delete_cookie('userName')#刪除名字為userName的cookiecookie2 = driver.get_cookies()

for?i?in?cookie2:

print('%s >> %s'?% (i['name'],i['value']))

driver.quit()

10.4delete_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獲取頁面的cookiefor?i?in?cookie:

print('%s >> %s'?% (i['name'],i['value']))

driver.delete_all_cookies()#刪除所有的cookiecookie2 = driver.get_cookies()

for?i?in?cookie2:

print('%s >> %s'?% (i['name'],i['value']))

driver.quit()



11調(diào)用javascript

from?selenium?import?webdriver

from?time?import?sleep

driver = webdriver.Chrome()

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

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

#搜索內(nèi)容driver.find_element_by_id('kw').send_keys('selenium')

driver.find_element_by_id('su').click()

sleep(2)

#通過javascript設(shè)置瀏覽器窗口的滾動條位置js='window.scrollTo(100,450);'#執(zhí)行script語句driver.execute_script(js)

sleep(3)




1.?元素定位

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


need-to-insert-img


need-to-insert-img


1.2?driver.find_element_by_id()

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


need-to-insert-img

1.2.1?例子

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

1.3?driver.find_element_by_xpath()

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


1.3.1?Chrome瀏覽器怎么獲取xpath值

右擊鼠標,可以復(fù)制xpath值


need-to-insert-img


1.3.2?例子

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


1.4?driver.find_element_by_class_name()

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


need-to-insert-img

1.4.1?例子

from?selenium?import?webdriverdriver=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屬性定位元素


need-to-insert-img

1.5.1?例子

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

1.6?driver.find_element_by_link_text()

說明:通過頁面上的鏈接定位元素


need-to-insert-img

1.6.1?例子

from?selenium?import?webdriverdriver=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?webdriverimport?timedriver=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?webdriverdriver = webdriver.Chrome()driver.get("http://www.baidu.com")driver.find_element_by_css_selector("#kw").send_keys("selenium2")






2?簡單的元素操作


2.1?send_keys()

說明:在input的輸入框內(nèi)輸入值

2.1.1?例子

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

2.2?click()

說明:點擊頁面按鈕

2.2.1?例子

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


2.3?clear()

說明:清除input輸入框內(nèi)的輸入內(nèi)容

2.3.1?例子

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

2.4?back()

說明:回到前一個頁面

2.4.1?例子

from?selenium?import?webdriverdriver=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?webdriverdriver=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?webdriverimport?timedriver=webdriver.Chrome()driver.get("http://www.sina.com")time.sleep(5)#睡5秒driver.refresh()#刷新頁面

?

2.7?submit()

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

2.7.1?例子

from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()driver.get("http://www.baidu.com")ele=driver.find_element_by_id("kw")ele.send_keys("selenium")#以id定位元素,然后在輸入框內(nèi)輸入seleniumele.submit()

2.8?title

說明:獲取頁面的標題


need-to-insert-img

2.8.1?例子

from?selenium?import?webdriverimport?timedriver?= webdriver.Chrome()driver.get("http://www.baidu.com")title=driver.titleprint(title)

2.9?current_url

說明:得到當前頁面的url

2.9.1?例子

from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()driver.get("http://www.baidu.com")url=driver.current_urlprint(url)

2.10?quit

說明:退出程序運行

2.10.1?例子

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

2.11?Text

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

2.11.1?例子

from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()driver.get("http://www.baidu.com")ele=driver.find_element_by_link_text("登錄")text=ele.textprint(text)

2.12?tag_name

說明:頁面標簽類型


need-to-insert-img

2.12.1?例子

from?selenium?import?webdriverimport?timedriver = 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?webdriverimport?timedriver = 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?webdriverimport?timedriver = 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()

說明:得到頁面屬性對應(yīng)的值


need-to-insert-img

2.15.1?例子

from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()driver.get("http://www.baidu.com")ele=driver.find_element_by_id("kw")tag=ele.get_attribute("name")#得到name屬性對應(yīng)的值print(tag)driver.quit()

2.16?set_window_size()

說明:設(shè)置瀏覽器窗口大小

2.16.1?例子

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

2.17?maximize_window()

說明:窗口最大化

2.17.1?例子

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

2.18?Size

說明:返回元素的大小

2.18.1?例子

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

3?鼠標事件

3.1?context_click

說明:右擊操作

3.1.1?例子

from?selenium?import?webdriverfrom?selenium.webdriver.common.action_chains?import?ActionChainsdriver = 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不顯示右擊的內(nèi)容


3.2?move_to_element

說明:鼠標懸停

3.2.1?例子

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


3.3?double_click

說明:雙擊操作

3.4?drag_and_drop

說明:元素拖動

3.4.1?例子

from?selenium?import?webdriverfrom?selenium.webdriver.common.action_chains?import?ActionChainsdriver = 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?鍵盤事件

4.1?BACK_SPACE

說明:刪除操作

4.1.1?例子

from?selenium?import?webdriverfrom?selenium.webdriver.common.keys?import?Keysimport ?timedriver = 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?webdriverfrom?selenium.webdriver.common.keys?import?Keysdriver = 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"

說明:全選輸入框內(nèi)容

同理:Keys.CONTROL,"v"?粘貼內(nèi)容到輸入框

Keys.CONTROL,"x"??剪貼輸入框內(nèi)容



4.3.1?例子

from?selenium?import?webdriverfrom?selenium.webdriver.common.keys?import?Keysdriver = 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 ,全選輸入框內(nèi)容

?

4.4?Keys.ENTER

說明:回車操作

4.4.1?例子

from?selenium?import?webdriverfrom?selenium.webdriver.common.keys?import?Keysdriver = 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?設(shè)置等待

5.1?顯示等待

from?selenium?import?webdriverimport?timedriver = 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?#存在就跳出循環(huán)???????except:pass????time.sleep(1)#不然睡一秒繼續(xù)找else:????print('time out')#循環(huán)完了找不到就打印超時????print(time.ctime())#打印當前時間????driver.close()


5.2?implicitly_wait()

說明:implicitly_wait():隱式等待?5?當使用了隱士等待執(zhí)行測試的時候,如果?WebDriver沒有在 DOM中找到元素,將繼續(xù)等待,超出設(shè)定時間后則拋出找不到元素的異常?6?換句話說,當查找元素或元素并沒有立即出現(xiàn)的時候,隱式等待將等待一段時間再查找?DOM,默認的時間是0?7?一旦設(shè)置了隱式等待,則它存在整個?WebDriver 對象實例的聲明周期中,隱式的等到會讓一個正常響應(yīng)的應(yīng)用的測試變慢,?8?它將會在尋找每個元素的時候都進行等待,這樣會增加整個測試執(zhí)行的時間。

5.2.1?例子

from?selenium?import?webdriverfrom?selenium.common.exceptions?import?NoSuchElementExceptionimport?timedriver = webdriver.Chrome()driver.implicitly_wait(10)#設(shè)置了全局查找元素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?webdriverimport?timedriver = 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()

6?定位一組元素

from?selenium?import?webdriverimport?timedriver = webdriver.Chrome()#設(shè)置瀏覽器窗口大小driver.maximize_window()#打開12306網(wǎng)址driver.get('https://www.12306.cn/index/')url2 = driver.current_urltime.sleep(3)url1 = driver.current_url#查找登錄的鏈接driver.find_element_by_xpath('//*[@id="J-header-login"]/a[1]').click()time.sleep(3)#跳轉(zhuǎn)到賬號登錄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后多了個sfor?i?in?eles:????if?i.get_attribute('class') ==?'input':#如果輸入框的class屬性等于input就執(zhí)行下一步????????i.send_keys('selenium')????????time.sleep(2)


7?多表單切換(iframe

見selenuim2自動化測試實戰(zhàn)基于python語言(p104)

8?多窗口切換

from?selenium?import?webdriverimport?timedriver = 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()#關(guān)掉打開的小窗口????????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()

9?警告對話框處理

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

10?操作cookie

10.1?Get_cookie

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

10.2?add_cookie

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

10.3??delete_cookie

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

10.4?delete_all_cookies

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


11?調(diào)用javascript

from?selenium?import?webdriverfrom?time?import?sleepdriver = webdriver.Chrome()driver.get('http://www.baidu.com')#設(shè)置瀏覽器窗口大小driver.set_window_size(600,600)#搜索內(nèi)容driver.find_element_by_id('kw').send_keys('selenium')driver.find_element_by_id('su').click()sleep(2)#通過javascript設(shè)置瀏覽器窗口的滾動條位置js='window.scrollTo(100,450);'#執(zhí)行script語句driver.execute_script(js)sleep(3)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容