您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源功能測(cè)試工具 > Selenium
Selenium之百度搜索,結(jié)果列表翻頁(yè)查詢
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2015/1/16 14:51:37 ] 推薦標(biāo)簽:Selenium 功能測(cè)試工具 單元測(cè)試

  實(shí)例:百度搜索,結(jié)果列表翻頁(yè)查詢
  解決問(wèn)題:解決selenium driver獲取web頁(yè)面元素時(shí),元素過(guò)期問(wèn)題
  思路1:獲取所有“頁(yè)面翻頁(yè)鏈接”元素,然后遍歷元素并點(diǎn)擊
# -*- coding: utf-8 -*-
from selenium import webdriver
import time
if __name__ == "__main__":
driver = webdriver.Firefox()
driver.maximize_window()
driver.get('http://www.baidu.com')
driver.implicitly_wait(5)
driver.find_element_by_id('kw1').send_keys('selenium')
driver.find_element_by_id('su1').click()
page = driver.find_element_by_id('page')
pages = page.find_elements_by_tag_name('a')  #查找所有翻頁(yè)跳轉(zhuǎn)鏈接
#設(shè)置滾動(dòng)條位置為底部
js = 'document.documentElement.scrollTop=10000'
for each in pages:
driver.execute_script(js)   #拖動(dòng)滾動(dòng)條到底部
each.click()
driver.execute_script(js)
time.sleep(3)
driver.quit()
  結(jié)果:點(diǎn)擊第3頁(yè)時(shí),程序出錯(cuò)
  selenium.common.exceptions.StaleElementReferenceException: Message: u'Element not found in the cache - perhaps the page has changed since it was looked up' ; Stacktrace:
  即在cache中找不到元素,可能是在元素被找到之后頁(yè)面變換了。 這說(shuō)明,當(dāng)前頁(yè)面發(fā)生跳轉(zhuǎn)之后,存在cache中的與這個(gè)頁(yè)面相關(guān)的元素也被清空了
  思路2:基于思路1的錯(cuò)誤結(jié)果分析>先獲取每個(gè)頁(yè)面數(shù),然后每次點(diǎn)擊某個(gè)頁(yè)面,跳轉(zhuǎn)后重新獲取下一個(gè)頁(yè)面翻頁(yè)鏈接,然后點(diǎn)擊,循環(huán)。。
# -*- coding: utf-8 -*-
from selenium import webdriver
import time
if __name__ == "__main__":
driver = webdriver.Firefox()
driver.maximize_window()
driver.get('http://www.baidu.com')
driver.implicitly_wait(5)
driver.find_element_by_id('kw1').send_keys('selenium')
driver.find_element_by_id('su1').click()
page = driver.find_element_by_id('page')
pages = page.find_elements_by_tag_name('a')
js = 'document.documentElement.scrollTop=10000'
total = len(pages)
has_pre_page = False
page_num = 0
for i in range(total):
driver.execute_script(js)
pn=10
page_num = page_num + 1 #設(shè)置頁(yè)面號(hào)
one_page = driver.find_element_by_css_selector('p[id="page"]>a:nth-of-type('+str(page_num)+')')
one_page.click()

上一頁(yè)12下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd