欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Selenium的使用詳解

 更新時(shí)間:2018年10月19日 09:36:58   作者:回憶不說(shuō)話  
今天小編就為大家分享一篇關(guān)于Selenium的使用詳解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

先來(lái)看一下功能實(shí)現(xiàn),代碼如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
#聲明瀏覽器對(duì)象
browser = 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()

可以看到打開(kāi)了百度網(wǎng)站,查詢了“Python”并且輸出了當(dāng)前的url,cookies還有網(wǎng)頁(yè)源代碼。

下面再來(lái)介紹詳細(xì)功能。

1、聲明瀏覽器對(duì)象。

browser = webdriver.Chrome()
browser = webdriver.Firefox()

瀏覽器的對(duì)象初始化,并將其賦值給browser對(duì)象。

2.以淘寶為例,請(qǐng)求網(wǎng)頁(yè)。

browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
print(browser.page_source)
browser.close()

可以看到輸出了淘寶的源碼,隨后關(guān)閉。

3.查找節(jié)點(diǎn)

單個(gè)節(jié)點(diǎn)

提取搜索框這個(gè)節(jié)點(diǎn)

檢查搜索框如下:

查找搜索框:

browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
# 通過(guò)id查找
input_first = browser.find_element_by_id('q')
# 通過(guò)css查找
input_second = browser.find_element_by_css_selector('#q')
# 通過(guò)xpath查找
input_third = browser.find_element_by_xpath('//*[@id="q"]')
print(input_first,input_second,input_third)
browser.close()
# 查找單個(gè)節(jié)點(diǎn)的方法
find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector

通用方法查找:

browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
input_first = browser.find_element(By.ID,'q')
print(input_first)
browser.close()
  • find_element()里面需要兩個(gè)參數(shù),查找方式By和值,
  • 例如:find_element(By.ID,'q')  通過(guò)查找ID的當(dāng)時(shí),查找id為q。

多個(gè)節(jié)點(diǎn):

例如左側(cè)的導(dǎo)航條所有條目:

browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
lis = browser.find_elements_by_css_selector('.service-bd li')
print(lis)
browser.close()

獲取多個(gè)節(jié)點(diǎn)的方法:

find_elements_by_id
find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector

通用方法在這里同樣適用。

4、節(jié)點(diǎn)交互

import time
browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
input = browser.find_element_by_id('q')
# 輸入文字用send_keys()
input.send_keys('ipone')
time.sleep(1)
#清空文字用clear()
input.clear()
input.send_keys('ipad')
button = browser.find_element_by_class_name('btn-search')
#點(diǎn)擊
button.click()

5、動(dòng)作鏈

from selenium import webdriver
from selenium.webdriver import ActionChains
browser = webdriver.Chrome()
url = 'http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'
browser.get(url)
browser.switch_to.frame('iframeResult')
#找到被拖拽的標(biāo)簽
source = browser.find_element_by_css_selector('#draggable')
#找到拖拽目的地的標(biāo)簽
target = browser.find_element_by_css_selector('#droppable')
actions = ActionChains(browser)
actions.drag_and_drop(source,target)
actions.perform()

運(yùn)行結(jié)果如下:

6、執(zhí)行JavaScript

例如下拉進(jìn)度條,可以直接模擬運(yùn)行JavaScript,適用execute_script()即可實(shí)現(xiàn)

from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.zhihu.com/explore')
browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
browser.execute_script('alert("To Bottom")')

將滾動(dòng)條拉到底部,執(zhí)行結(jié)果如下:

7、獲取節(jié)點(diǎn)信息

獲取屬性

代碼如下:

from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.zhihu.com/explore')
logo = browser.find_element_by_id('zh-top-link-logo')
print(logo)
# 獲取class屬性
print(logo.get_attribute('class'))

獲取文本值

代碼如下:

from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.zhihu.com/explore')
input = browser.find_element_by_class_name('zu-top-add-question')
print(input.text)

輸出結(jié)果如下:

獲取id、位置、標(biāo)簽名和大小

以上面的標(biāo)簽為例:

from selenium import webdriver
browser = 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)
#標(biāo)簽名
print(input.tag_name)
#大小
print(input.size)

輸出結(jié)果:

8、界面切換

代碼如下:

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
browser = webdriver.Chrome()
browser.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
#界面切換到子界面
browser.switch_to.frame('iframeResult')
try:
  # 查找logo
  logo = browser.find_element_by_class_name('logo')
except NoSuchElementException:
  print('NO LOGO')
  # 界面切換到父級(jí)界面
browser.switch_to.parent_frame()
# 查找logo
logo = browser.find_element_by_class_name('logo')
print(logo)
print(logo.text)

9、延時(shí)等待

隱式等待

當(dāng)selenium沒(méi)有在DOM中找到節(jié)點(diǎn),繼續(xù)等待,超出設(shè)定時(shí)間,拋出異常

browser = 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)

顯式等待

指定要查找的節(jié)點(diǎn),然后指定一個(gè)最長(zhǎng)等待時(shí)間,如果在規(guī)定時(shí)間內(nèi)加載出來(lái)節(jié)點(diǎn),返回節(jié)點(diǎn),如果超出規(guī)定時(shí)間,拋出異常。

browser = webdriver.Chrome()
browser.get('https://www.taobao.com/')
wait = WebDriverWait(browser,10)
input = wait.until(EC.presence_of_element_located((By.ID,'q')))
# 節(jié)點(diǎn)可點(diǎn)擊
button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.btn-search')))
print(input,button)

10、Cookies

browser = webdriver.Chrome()
browser.get('https://www.zhihu.com/explore')
# 獲取cookies
print(browser.get_cookies())
# 添加cookie
browser.add_cookie({'name':'name','domin':'www.zhihu.com','value':'germey'})
print(browser.get_cookies())
# 刪除所有的cookies
browser.delete_all_cookies()
print(browser.get_cookies())

輸出結(jié)果:

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

最新評(píng)論