switch_to_alert() 用于獲取網(wǎng)頁(yè)上的警告信息。
text 返回 alert/confirm/prompt 中的文字信息瞧掺。
accept 點(diǎn)擊確認(rèn)按鈕耕餐。
dismiss 點(diǎn)擊取消按鈕,如果有的話(huà)辟狈。
send_keys 輸入值肠缔,這個(gè)alert\confirm沒(méi)有對(duì)話(huà)框就不能用了夏跷,不然會(huì)報(bào)錯(cuò)。
driver = driver driver.find_element_by_name("username").clear()
driver.find_element_by_name("username").send_keys("")
driver.find_element_by_name("password").clear()
driver.find_element_by_name("password").send_keys("")
time.sleep(2)
driver.find_element_by_name("Submit").click()
try:
alertstr = driver.switch_to_alert()
alertTF = True
except:
alertTF = False
if alertTF:
print alertstr.text
alertstr.accept()
下拉框也是 web頁(yè)面上非常常見(jiàn)的功能明未,webdriver 對(duì)于一般的下拉框處理起來(lái)也相當(dāng)簡(jiǎn)單槽华,要想定位下拉框中的內(nèi)容,首先需要定位到下拉框 使用教務(wù)系統(tǒng)中的添加課程窗口中的下拉框選擇進(jìn)行舉例趟妥,使用不同方式進(jìn)行實(shí)現(xiàn)猫态。
下拉框處理: 二次定位:
driver.find_element_by_xx('xx').find_element_by_xx('xx').click()
……
#先定位到下拉框 m=driver.find_element_by_id("ShippingMethod")
#再點(diǎn)擊下拉框下的選項(xiàng)
m.find_element_by_xpath("http://option[@value='10.69']").click()
……
文件上傳:
driver.find_element_by_xx('xx').send_keys('d:/abc.txt')
#定位上傳按鈕,添加本地文件
driver.find_element_by_name("file").send_keys('D:\\selenium_use_case\upload_file.txt')
文件下載:
確定Content-Type : 下載文件的類(lèi)型
方法一: curl -I URL | grep "Content-Type"
方法二:
import requests
print requests.head(’http://www.python.org’).headers[’content-type’]
文件下載:
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", os.getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")
browser = webdriver.Firefox(firefox_profile=fp)
browser.get("http://pypi.python.org/pypi/selenium")
browser.find_element_by_partial_link_text("selenium-2").click()
調(diào)用javaScript:
execute_script()
調(diào)用js方法
隱藏文字信息
driver.execute_script('$("#tooltip").fadeOut();')
隱藏按鈕:
button = driver.find_element_by_class_name('btn')
driver.execute_script('$(arguments[0]).fadeOut()',button)
控制瀏覽器滾動(dòng)條:
將頁(yè)面滾動(dòng)條拖到底部
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
將滾動(dòng)條移動(dòng)到頁(yè)面的頂部
js_="var q=document.documentElement.scrollTop=0"
driver.execute_script(js_)
cookie處理:
get_cookies() 獲得所有cookie信息
get_cookie(name) 返回特定name 有cookie信息
add_cookie(cookie_dict) 添加cookie煮纵,必須有name 和value 值
delete_cookie(name) 刪除特定(部分)的cookie信息
delete_all_cookies() 刪除所有cookie信息
driver = webdriver.Firefox()
driver.get("http://www.youdao.com")
#向 cookie 的 name 和 value 添加會(huì)話(huà)信息懂鸵。
driver.add_cookie({'name':'key-aaaaaaa', 'value':'value-bbbb'})
遍歷 cookies 中的 name 和 value信息打印,當(dāng)然還有上面添加的信息
for cookie in driver.get_cookies():
print "%s -> %s" % (cookie['name'], cookie['value'])
Python WebDriver API-獲取對(duì)象屬性
獲取測(cè)試對(duì)象的屬性能夠幫我們更好的進(jìn)行對(duì)象的定位行疏。比如頁(yè)面上有很多標(biāo)簽為 input 元素匆光,而我們需要定位其中 1 個(gè)有具有 data-node 屬性不一樣的元素。由于 webdriver 是不支持直接使用 data-node 來(lái)定位對(duì)象的酿联,所以我們只能先把所有標(biāo)簽為 input都找到终息,然后遍歷這些 input,獲取想要的元素贞让。
通過(guò) find_elements 獲得一組元素周崭,通過(guò)循環(huán)遍歷找到想要的元素:
選擇頁(yè)面上所有的 tag name 為 input 的元素
inputs = driver.find_elements_by_tag_name('input')
然后循環(huán)遍歷出 data-node 為594434493的元素,單擊勾選
for input in inputs:
if input.get_attribute('data-node') == '594434493':
input.click()