Python爬蟲之Selenium庫(kù)的使用方法
Selenium 是一個(gè)用于Web應(yīng)用程序測(cè)試的工具。Selenium測(cè)試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。這個(gè)工具的主要功能包括:測(cè)試與瀏覽器的兼容性——測(cè)試你的應(yīng)用程序看是否能夠很好得工作在不同瀏覽器和操作系統(tǒng)之上。測(cè)試系統(tǒng)功能——?jiǎng)?chuàng)建回歸測(cè)試檢驗(yàn)軟件功能和用戶需求。支持自動(dòng)錄制動(dòng)作和自動(dòng)生成 .Net、Java、Perl等不同語(yǔ)言的測(cè)試腳本。(摘自百科)
# 基本使用from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.support.wait import WebDriverWaitbrowser = webdriver.Chrome()try: browser.get(’https://www.baidu.com’) input = browser.find_element_by_id(’kw’) input.send_keys(’Python’) input.send_keys(Keys.ENTER) wait = WebDriverWait(browser, 10) wait.until(EC.presence_of_element_located((By.ID, ’content_left’))) print(browser.current_url) print(browser.get_cookies()) print(browser.page_source)finally: browser.close()# 聲明瀏覽器對(duì)象from selenium import webdriverbrowser = webdriver.Chrome()browser = webdriver.Firefox()browser = webdriver.Edge()browser = webdriver.PhantomJS()browser = webdriver.Safari()# 訪問(wèn)頁(yè)面from selenium import webdriverbrowser = webdriver.Chrome()browser.get(’https://www.taobao.com’)print(browser.page_source)browser.close()# 查找元素# 單個(gè)元素from selenium import webdriverbrowser = webdriver.Chrome()browser.get(’https://www.taobao.com’)# 下面三個(gè)效果是一樣的input_first = browser.find_element_by_id(’q’)input_second = browser.find_element_by_css_selector(’#q’)input_third = browser.find_element_by_xpath(’//*[@id='q']’)print(input_first)print(input_second)print(input_third)browser.close()from selenium import webdriverfrom selenium.webdriver.common.by import Bybrowser = webdriver.Chrome()browser.get(’https://www.taobao.com’)input_first = browser.find_element(By.ID, ’q’)print(input_first)browser.close()# 多個(gè)元素from selenium import webdriverbrowser = webdriver.Chrome()browser.get(’https://www.taobao.com’)lis = browser.find_elements_by_css_selector(’.service-bd li’)print(lis)browser.close()from selenium import webdriverfrom selenium.webdriver.common.by import Bybrowser = webdriver.Chrome()browser.get(’https://www.taobao.com’)lis = browser.find_elements(By.CSS_SELECTOR, ’.service-bd li’)print(lis)browser.close()# 元素交互操作# 對(duì)獲取的元素調(diào)用交互方法from selenium import webdriverimport timebrowser = webdriver.Chrome()browser.get(’https://www.taobao.com’)input = browser.find_element_by_id(’q’)input.send_keys(’筆記本電腦’)time.sleep(5)input.clear()input.send_keys(’iPad’)button = browser.find_element_by_class_name(’btn-search’)# button.click()# 交互動(dòng)作# 將動(dòng)作附加到動(dòng)作鏈中串行執(zhí)行from selenium import webdriverfrom selenium.webdriver import ActionChainsbrowser = webdriver.Chrome()url = 'http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'browser.get(url)browser.switch_to.frame(’iframeResult’)source = browser.find_element_by_css_selector(’#draggable’)target = browser.find_element_by_css_selector(’#droppable’)actions = ActionChains(browser)actions.drag_and_drop(source, target)actions.perform()# 執(zhí)行JavaScriptfrom selenium import webdriverbrowser = webdriver.Chrome()browser.get('https://www.zhihu.com/explore')browser.execute_script(’window.scrollTo(0, document.body.scrollHeight)’)browser.execute_script(’alert('To Bottom')’)# 獲取元素信息# 獲取屬性from selenium import webdriverfrom selenium.webdriver import ActionChainsbrowser = webdriver.Chrome()browser.get('https://www.zhihu.com/explore')logo = browser.find_element_by_id(’zh-top-link-logo’)print(logo)print(logo.get_attribute(’class’))# 獲取文本值from selenium import webdriverbrowser = webdriver.Chrome()browser.get(’https://www.zhihu.com/explore’)input = browser.find_element_by_class_name(’zu-top-add-question’)print(input.text)# 獲取ID、位置、標(biāo)簽名、大小from selenium import webdriverbrowser = webdriver.Chrome()browser.get(’https://www.zhihu.com/explore’)input = browser.find_element_by_class_name(’zu-top-add-question’)print(input.id)print(input.location)print(input.tag_name)print(input.size)# Frameimport timefrom selenium import webdriverfrom selenium.common.exceptions import NoSuchElementExceptionbrowser = webdriver.Chrome()browser.get(’http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable’)browser.switch_to.frame(’iframeResult’)source = browser.find_element_by_css_selector(’#draggable’)print(source)try: logo = browser.find_element_by_class_name(’logo’)except NoSuchElementException: print(’NO LOGO’)browser.switch_to.parent_frame()logo = browser.find_element_by_class_name(’logo’)print(logo)print(logo.text)# 等待# 隱式等待# 當(dāng)使用了隱式等待執(zhí)行測(cè)試的時(shí)候,如果WebDriver沒有在DOM中找到元素,將繼續(xù)等待,超出設(shè)定時(shí)間后拋出找不到元素的異常,# 換句話說(shuō),當(dāng)查找元素或元素并沒有立即出現(xiàn)的時(shí)候,隱式等待將等待一段時(shí)間再查找DOM,默認(rèn)的時(shí)間是0from selenium import webdriverbrowser = webdriver.Chrome()browser.implicitly_wait(10)browser.get(’https://www.zhihu.com/explore’)input = browser.find_element_by_class_name(’zu-top-add-question’)print(input)# 顯示等待from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECbrowser = webdriver.Chrome()browser.get(’https://www.taobao.com/’)wait = WebDriverWait(browser, 10)input = wait.until(EC.presence_of_element_located((By.ID, ’q’)))button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ’.btn-search’)))print(input, button)# 前進(jìn)后退import timefrom selenium import webdriverbrowser = webdriver.Chrome()browser.get(’https://www.baidu.com’)browser.get(’https://www.taobao.com’)browser.get(’https://www.python.org’)browser.back()time.sleep(5)browser.forward()browser.close()# Cookiesfrom selenium import webdriverbrowser = webdriver.Chrome()browser.get(’https://www.zhihu.com/explore’)print(browser.get_cookies())browser.add_cookie({’name’:’name’, ’domain’:’www.zhihu.com’, ’value’:’germey’})print(browser.get_cookies())browser.delete_all_cookies()print(browser.get_cookies())# 選項(xiàng)卡管理import timefrom selenium import webdriverbrowser = webdriver.Chrome()browser.get(’https://www.baidu.com’)browser.execute_script(’window.open()’)print(browser.window_handles)browser.switch_to_window(browser.window_handles[1])browser.get(’https://www.taobao.com’)time.sleep(5)browser.switch_to_window(browser.window_handles[0])browser.get(’https://python.org’)# 異常處理from selenium import webdriverbrowser = webdriver.Chrome()browser.get(’https://www.baidu.com’)browser.find_element_by_id(’hello’)from selenium import webdriverfrom selenium.common.exceptions import TimeoutException, NoSuchElementExceptionbrowser = webdriver.Chrome()try: browser.get(’https://www.baidu.com’)except TimeoutException: print(’Time Out’)try: browser.find_element_by_id(’hello’)except NoSuchElementException: print(’No Element’)finally: browser.close()
以上就是Python爬蟲之Selenium庫(kù)的使用方法的詳細(xì)內(nèi)容,更多關(guān)于python Selenium庫(kù)的使用的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. 利用CSS3新特性創(chuàng)建透明邊框三角2. phpstudy apache開啟ssi使用詳解3. xml中的空格之完全解說(shuō)4. ASP.NET Core實(shí)現(xiàn)中間件的幾種方式5. XML解析錯(cuò)誤:未組織好 的解決辦法6. phpstorm斷點(diǎn)調(diào)試方法圖文詳解7. JavaScrip簡(jiǎn)單數(shù)據(jù)類型隱式轉(zhuǎn)換的實(shí)現(xiàn)8. CSS可以做的幾個(gè)令你嘆為觀止的實(shí)例分享9. asp讀取xml文件和記數(shù)10. 在JSP中使用formatNumber控制要顯示的小數(shù)位數(shù)方法
