日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

selenium python_Python+Selenium基础入门及实践

發(fā)布時(shí)間:2024/9/30 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 selenium python_Python+Selenium基础入门及实践 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、Selenium+Python環(huán)境搭建及配置

1.1 selenium 介紹

selenium 是一個(gè) web 的自動(dòng)化測(cè)試工具,不少學(xué)習(xí)功能自動(dòng)化的同學(xué)開始首選 selenium ,因?yàn)樗啾?QTP 有諸多有點(diǎn):

免費(fèi),也不用再為破解 QTP 而大傷腦筋

小巧,對(duì)于不同的語言它只是一個(gè)包而已,而 QTP 需要下載安裝1個(gè)多 G 的程序。

這也是最重要的一點(diǎn),不管你以前更熟悉 C、 java、ruby、python、或都是 C# ,你都可以通過 selenium 完成自動(dòng)化測(cè)試,而 QTP 只支持 VBS

支持多平臺(tái):windows、linux、MAC ,支持多瀏覽器:ie、ff、safari、opera、chrome

支持分布式測(cè)試用例的執(zhí)行,可以把測(cè)試用例分布到不同的測(cè)試機(jī)器的執(zhí)行,相當(dāng)于分發(fā)機(jī)的功能。

官方文檔:

1.2 selenium+Python環(huán)境配置

前提條件:已安裝好Python開發(fā)環(huán)境(推薦安裝Python3.5及以上版本)

安裝步驟:

Webdriver版本

支持的Chrome版本

v2.41

v67-69

v2.40

v66-68

v2.39

v66-68

v2.38

v65-67

v2.37

v64-66

v2.36

v63-65

v2.35

v62-64

v2.34

v61-63

v2.33

v60-62

webdriver安裝路徑

Win:復(fù)制webdriver到Python安裝目錄下

Mac:復(fù)制webdriver到/usr/local/bin目錄下

二、元素定位及瀏覽器基本操作

2.1 啟動(dòng)瀏覽器

2.1.1 普通方式啟動(dòng)

啟動(dòng)Chrome瀏覽器:

from selenium import webdriver

browser = webdriver.Chrome()

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

啟動(dòng)Firefox瀏覽器:

from selenium import webdriver

browser = webdriver.Firefox()

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

啟動(dòng)IE瀏覽器:

from selenium import webdriver

browser = webdriver.Ie()

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

2.1.2 Headless方式啟動(dòng)

Headless Chrome 是 Chrome 瀏覽器的無界面形態(tài),可以在不打開瀏覽器的前提下,使用所有 Chrome 支持的特性運(yùn)行你的程序。相比于現(xiàn)代瀏覽器,Headless Chrome 更加方便測(cè)試 web 應(yīng)用,獲得網(wǎng)站的截圖,做爬蟲抓取信息等。相比于較早的 PhantomJS,SlimerJS 等,Headless Chrome 則更加貼近瀏覽器環(huán)境。

Headless Chrome 對(duì)Chrome版本要求:

官方文檔中介紹,mac和linux環(huán)境要求chrome版本是59+,而windows版本的chrome要求是60+,同時(shí)chromedriver要求2.30+版本。

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.action_chains import ActionChains

from selenium.webdriver.common.keys import Keys

chrome_options = webdriver.ChromeOptions()

# 使用headless無界面瀏覽器模式

chrome_options.add_argument('--headless') //增加無界面選項(xiàng)

chrome_options.add_argument('--disable-gpu') //如果不加這個(gè)選項(xiàng),有時(shí)定位會(huì)出現(xiàn)問題

# 啟動(dòng)瀏覽器,獲取網(wǎng)頁源代碼

browser = webdriver.Chrome(chrome_options=chrome_options)

mainUrl = "https://www.taobao.com/"

browser.get(mainUrl)

print(f"browser text = {browser.page_source}")

browser.quit()

2.1.3 加載配置啟動(dòng)瀏覽器

Selenium操作瀏覽器是不加載任何配置的,下面是關(guān)于加載Chrome配置的方法:

用Chrome地址欄輸入chrome://version/,查看自己的“個(gè)人資料路徑”,然后在瀏覽器啟動(dòng)時(shí),調(diào)用這個(gè)配置文件,代碼如下:

#coding=utf-8

from selenium import webdriver

option = webdriver.ChromeOptions()

option.add_argument('--user-data-dir=C:\Users\Administrator\AppData\Local\Google\Chrome\User Data') #設(shè)置成用戶自己的數(shù)據(jù)目錄

driver=webdriver.Chrome(chrome_options=option)

而加載Firefox配置的方法有些不同:

打開Firefox點(diǎn)右上角設(shè)置>?(幫助)>故障排除信息>顯示文件夾,打開后把路徑復(fù)制下來就可以了

# coding=utf-8

from selenium import webdriver

# 配置文件地址

profile_directory = r'C:\Users\xxx\AppData\Roaming\Mozilla\Firefox\Profiles\1x41j9of.default'

# 加載配置配置

profile = webdriver.FirefoxProfile(profile_directory)

# 啟動(dòng)瀏覽器配置

driver = webdriver.Firefox(profile)

2.2 元素定位

對(duì)象的定位應(yīng)該是自動(dòng)化測(cè)試的核心,要想操作一個(gè)對(duì)象,首先應(yīng)該識(shí)別這個(gè)對(duì)象。一個(gè)對(duì)象就是一個(gè)人一樣,他會(huì)有各種的特征(屬性),如比我們可以通過一個(gè)人的身份證號(hào),姓名,或者他住在哪個(gè)街道、樓層、門牌找到這個(gè)人。那么一個(gè)對(duì)象也有類似的屬性,我們可以通過這個(gè)屬性找到這對(duì)象。

webdriver 提供了一系列的對(duì)象定位方法,常用的有以下幾種:

id定位:find_element_by_id()

name定位:find_element_by_name()

class定位:find_element_by_class_name()

link定位:find_element_by_link_text()

partial link定位:find_element_by_partial_link_text()

tag定位:find_element_by_tag_name()

xpath定位:find_element_by_xpath()

css定位:find_element_by_css_selector()

#coding=utf-8

from selenium import webdriver

browser=webdriver.Firefox()

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

#########百度輸入框的定位方式##########

#通過id方式定位

browser.find_element_by_id("kw").send_keys("selenium")

#通過name方式定位

browser.find_element_by_name("wd").send_keys("selenium")

#通過tag name方式定位

browser.find_element_by_tag_name("input").send_keys("selenium")

#通過class name方式定位

browser.find_element_by_class_name("s_ipt").send_keys("selenium")

#通過CSS方式定位

browser.find_element_by_css_selector("#kw").send_keys("selenium")

#通過xpath方式定位

browser.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")

############################################

browser.find_element_by_id("su").click()

time.sleep(3)

browser.quit()

2.2.1 class含有空格時(shí)解決方法:

在實(shí)際進(jìn)行元素定位時(shí),經(jīng)常發(fā)現(xiàn)class name是有多個(gè)class組合的復(fù)合類,中間以空格隔開。如果直接進(jìn)行定位會(huì)出現(xiàn)報(bào)錯(cuò),可以通過以下方式處理:

class屬性唯一但是有空格,選擇空格兩邊唯一的那一個(gè)

若空格隔開的class不唯一可以通過索引進(jìn)行定位

self.driver.find_elements_by_class_name('table-dragColumn')[0].click()

通過css方法進(jìn)行定位(空格以‘.’代替)

#前面加(.)空格地方用點(diǎn)(.)來代替

self.driver.find_element_by_css_selector('.dtb-style-1.table-dragColumns').click()

#包含整個(gè)類

self.driver.find_element_by_css_selector('class="dtb-style-1 table-dragColumns').click()

參考代碼:

# coding:utf-8

from selenium import webdriver

driver = webdriver.Firefox()

driver.get("http://mail.126.com/")

driver.implicitly_wait(20)

driver.switch_to.frame("x-URS-iframe")

# 方法一:取單個(gè)class屬性

driver.find_element_by_class_name("dlemail").send_keys("yoyo")

driver.find_element_by_class_name("dlpwd").send_keys("12333")

# 方法二:定位一組取下標(biāo)定位(乃下策)

driver.find_elements_by_class_name("j-inputtext")[0].send_keys("yoyo")

driver.find_elements_by_class_name("j-inputtext")[1].send_keys("12333")

# 方法三:css定位

driver.find_element_by_css_selector(".j-inputtext.dlemail").send_keys("yoyo")

driver.find_element_by_css_selector(".j-inputtext.dlpwd").send_keys("123")

# 方法四:取單個(gè)class屬性也是可以的

driver.find_element_by_css_selector(".dlemail").send_keys("yoyo")

driver.find_element_by_css_selector(".dlpwd").send_keys("123")

# 方法五:直接包含空格的CSS屬性定位大法

driver.find_element_by_css_selector("[class='j-inputtext dlemail']").send_keys("yoyo")

2.3 selenium三種等待方式

有時(shí)候?yàn)榱吮WC腳本運(yùn)行的穩(wěn)定性,需要腳本中添加等待時(shí)間。

2.3.1 強(qiáng)制等待

第一種也是最簡(jiǎn)單粗暴的一種辦法就是強(qiáng)制等待sleep(xx),需要引入“time”模塊,這種叫強(qiáng)制等待,不管你瀏覽器是否加載完了,程序都得等待3秒,3秒一到,繼續(xù)執(zhí)行下面的代碼,作為調(diào)試很有用,有時(shí)候也可以在代碼里這樣等待,不過不建議總用這種等待方式,太死板,嚴(yán)重影響程序執(zhí)行速度。

# -*- coding: utf-8 -*-

from selenium import webdriver

import time

driver = webdriver.Firefox()

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

time.sleep(3) # 強(qiáng)制等待3秒再執(zhí)行下一步

print(driver.current_url)

driver.quit()

2.3.2 隱性等待

第二種辦法叫隱性等待,通過添加 implicitly_wait() 方法就可以方便的實(shí)現(xiàn)智能等待;implicitly_wait(30) 的用法應(yīng)該比 time.sleep() 更智能,后者只能選擇一個(gè)固定的時(shí)間的等待,前者可以 在一個(gè)時(shí)間范圍內(nèi)智能的等待。

# -*- coding: utf-8 -*-

from selenium import webdriver

driver = webdriver.Firefox()

driver.implicitly_wait(30) # 隱性等待,最長(zhǎng)等30秒

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

print(driver.current_url)

driver.quit()

隱形等待是設(shè)置了一個(gè)最長(zhǎng)等待時(shí)間,如果在規(guī)定時(shí)間內(nèi)網(wǎng)頁加載完成,則執(zhí)行下一步,否則一直等到時(shí)間截止,然后執(zhí)行下一步。注意這里有一個(gè)弊端,那就是程序會(huì)一直等待整個(gè)頁面加載完成,也就是一般情況下你看到瀏覽器標(biāo)簽欄那個(gè)小圈不再轉(zhuǎn),才會(huì)執(zhí)行下一步,但有時(shí)候頁面想要的元素早就在加載完成了,但是因?yàn)閭€(gè)別js之類的東西特別慢,我仍得等到頁面全部完成才能執(zhí)行下一步,我想等我要的元素出來之后就下一步怎么辦?有辦法,這就要看selenium提供的另一種等待方式——顯性等待wait了。

需要特別說明的是:隱性等待對(duì)整個(gè)driver的周期都起作用,所以只要設(shè)置一次即可,我曾看到有人把隱性等待當(dāng)成了sleep在用,走哪兒都來一下…

2.3.3 顯性等待

第三種辦法就是顯性等待,WebDriverWait,配合該類的until()和until_not()方法,就能夠根據(jù)判斷條件而進(jìn)行靈活地等待了。它主要的意思就是:程序每隔xx秒看一眼,如果條件成立了,則執(zhí)行下一步,否則繼續(xù)等待,直到超過設(shè)置的最長(zhǎng)時(shí)間,然后拋出TimeoutException。

wait模塊的WebDriverWait類是顯性等待類,先看下它有哪些參數(shù)與方法:

selenium.webdriver.support.wait.WebDriverWait(類)

init

driver: 傳入WebDriver實(shí)例,即我們上例中的driver

timeout: 超時(shí)時(shí)間,等待的最長(zhǎng)時(shí)間(同時(shí)要考慮隱性等待時(shí)間)

poll_frequency: 調(diào)用until或until_not中的方法的間隔時(shí)間,默認(rèn)是0.5秒

ignored_exceptions: 忽略的異常,如果在調(diào)用until或until_not的過程中拋出這個(gè)元組中的異常,則不中斷代碼,繼續(xù)等待,如果拋出的是這個(gè)元組外的異常,則中斷代碼,拋出異常。默認(rèn)只有NoSuchElementException。

until

method: 在等待期間,每隔一段時(shí)間(__init__中的poll_frequency)調(diào)用這個(gè)傳入的方法,直到返回值不是False

message: 如果超時(shí),拋出TimeoutException,將message傳入異常

until_not

與until相反,until是當(dāng)某元素出現(xiàn)或什么條件成立則繼續(xù)執(zhí)行,

until_not是當(dāng)某元素消失或什么條件不成立則繼續(xù)執(zhí)行,參數(shù)也相同,不再贅述。

看了以上內(nèi)容基本上很清楚了,調(diào)用方法如下:

WebDriverWait(driver, 超時(shí)時(shí)長(zhǎng), 調(diào)用頻率, 忽略異常).until(可執(zhí)行方法, 超時(shí)時(shí)返回的信息)

這里需要特別注意的是until或until_not中的可執(zhí)行方法method參數(shù),很多人傳入了WebElement對(duì)象,如下:

WebDriverWait(driver, 10).until(driver.find_element_by_id('kw')) # 錯(cuò)誤

這是錯(cuò)誤的用法,這里的參數(shù)一定要是可以調(diào)用的,即這個(gè)對(duì)象一定有 call() 方法,否則會(huì)拋出異常:

TypeError: 'xxx' object is not callable

在這里,你可以用selenium提供的 expected_conditions 模塊中的各種條件,也可以用WebElement的 is_displayed() 、is_enabled()、**is_selected() **方法,或者用自己封裝的方法都可以。

#coding=utf-8

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.support.wait import WebDriverWait

base_url = "http://www.baidu.com"

driver = webdriver.Firefox()

driver.implicitly_wait(5)

'''隱式等待和顯示等待都存在時(shí),超時(shí)時(shí)間取二者中較大的'''

locator = (By.ID,'kw')

driver.get(base_url)

WebDriverWait(driver,10).until(EC.title_is(u"百度一下,你就知道"))

'''判斷title,返回布爾值'''

WebDriverWait(driver,10).until(EC.title_contains(u"百度一下"))

'''判斷title,返回布爾值'''

WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'kw')))

'''判斷某個(gè)元素是否被加到了dom樹里,并不代表該元素一定可見,如果定位到就返回WebElement'''

WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.ID,'su')))

'''判斷某個(gè)元素是否被添加到了dom里并且可見,可見代表元素可顯示且寬和高都大于0'''

WebDriverWait(driver,10).until(EC.visibility_of(driver.find_element(by=By.ID,value='kw')))

'''判斷元素是否可見,如果可見就返回這個(gè)元素'''

WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'.mnav')))

'''判斷是否至少有1個(gè)元素存在于dom樹中,如果定位到就返回列表'''

WebDriverWait(driver,10).until(EC.visibility_of_any_elements_located((By.CSS_SELECTOR,'.mnav')))

'''判斷是否至少有一個(gè)元素在頁面中可見,如果定位到就返回列表'''

WebDriverWait(driver,10).until(EC.text_to_be_present_in_element((By.XPATH,"//*[@id='u1']/a[8]"),u'設(shè)置'))

'''判斷指定的元素中是否包含了預(yù)期的字符串,返回布爾值'''

WebDriverWait(driver,10).until(EC.text_to_be_present_in_element_value((By.CSS_SELECTOR,'#su'),u'百度一下'))

'''判斷指定元素的屬性值中是否包含了預(yù)期的字符串,返回布爾值'''

#WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it(locator))

'''判斷該frame是否可以switch進(jìn)去,如果可以的話,返回True并且switch進(jìn)去,否則返回False'''

#注意這里并沒有一個(gè)frame可以切換進(jìn)去

WebDriverWait(driver,10).until(EC.invisibility_of_element_located((By.CSS_SELECTOR,'#swfEveryCookieWrap')))

'''判斷某個(gè)元素在是否存在于dom或不可見,如果可見返回False,不可見返回這個(gè)元素'''

#注意#swfEveryCookieWrap在此頁面中是一個(gè)隱藏的元素

WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='u1']/a[8]"))).click()

'''判斷某個(gè)元素中是否可見并且是enable的,代表可點(diǎn)擊'''

driver.find_element_by_xpath("//*[@id='wrapper']/div[6]/a[1]").click()

#WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='wrapper']/div[6]/a[1]"))).click()

#WebDriverWait(driver,10).until(EC.staleness_of(driver.find_element(By.ID,'su')))

'''等待某個(gè)元素從dom樹中移除'''

#這里沒有找到合適的例子

WebDriverWait(driver,10).until(EC.element_to_be_selected(driver.find_element(By.XPATH,"//*[@id='nr']/option[1]")))

'''判斷某個(gè)元素是否被選中了,一般用在下拉列表'''

WebDriverWait(driver,10).until(EC.element_selection_state_to_be(driver.find_element(By.XPATH,"//*[@id='nr']/option[1]"),True))

'''判斷某個(gè)元素的選中狀態(tài)是否符合預(yù)期'''

WebDriverWait(driver,10).until(EC.element_located_selection_state_to_be((By.XPATH,"//*[@id='nr']/option[1]"),True))

'''判斷某個(gè)元素的選中狀態(tài)是否符合預(yù)期'''

driver.find_element_by_xpath(".//*[@id='gxszButton']/a[1]").click()

instance = WebDriverWait(driver,10).until(EC.alert_is_present())

'''判斷頁面上是否存在alert,如果有就切換到alert并返回alert的內(nèi)容'''

print instance.text

instance.accept()

driver.close()

2.4 瀏覽器操作

2.4.1 瀏覽器最大化、最小化

將瀏覽器最大化顯示

browser.maximize_window()

將瀏覽器最小化顯示

browser.minimize_window()

2.4.2 瀏覽器設(shè)置窗口大小

設(shè)置瀏覽器寬480、高800顯示

browser.set_window_size(480, 800)

2.4.3 瀏覽器前進(jìn)后退

前進(jìn)

browser.forword()

后退

browser.back()

2.5 操作測(cè)試對(duì)象

一般來說,webdriver 中比較常用的操作對(duì)象的方法有下面幾個(gè):

click——點(diǎn)擊對(duì)象

send_keys——在對(duì)象上模擬按鍵輸入

clear——清除對(duì)象的內(nèi)容,如果可以的話

submit——提交對(duì)象的內(nèi)容,如果可以的話

text——用于獲取元素的文本信息

2.6 鍵盤事件

要想調(diào)用鍵盤按鍵操作需要引入 keys 包:

from selenium.webdriver.common.keys import Keys通過 send_keys()調(diào)用按鍵:

send_keys(Keys.TAB) # TAB

send_keys(Keys.ENTER) # 回車

參考代碼:

#coding=utf-8

from selenium import webdriver

from selenium.webdriver.common.keys import Keys #需要引入 keys 包

import os,time

driver = webdriver.Firefox()

driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fwebcloud .kuaibo.com%2F")

time.sleep(3)

driver.maximize_window() # 瀏覽器全屏顯示

driver.find_element_by_id("user_name").clear()

driver.find_element_by_id("user_name").send_keys("fnngj")

#tab 的定位相相于清除了密碼框的默認(rèn)提示信息,等同上面的 clear()

driver.find_element_by_id("user_name").send_keys(Keys.TAB)

time.sleep(3)

driver.find_element_by_id("user_pwd").send_keys("123456")

#通過定位密碼框,enter(回車)來代替登陸按鈕

driver.find_element_by_id("user_pwd").send_keys(Keys.ENTER)

#也可定位登陸按鈕,通過 enter(回車)代替 click()

driver.find_element_by_id("login").send_keys(Keys.ENTER)

time.sleep(3)

driver.quit()

鍵盤組合鍵的用法:

#ctrl+a 全選輸入框內(nèi)容

driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')

#ctrl+x 剪切輸入框內(nèi)容

driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')

2.7 鼠標(biāo)事件

鼠標(biāo)事件一般包括鼠標(biāo)右鍵、雙擊、拖動(dòng)、移動(dòng)鼠標(biāo)到某個(gè)元素上等等。

需要引入ActionChains類。

引入方法:

from selenium.webdriver.common.action_chains import ActionChains

ActionChains 常用方法:

perform() 執(zhí)行所有ActionChains 中存儲(chǔ)的行為;

context_click() 右擊;

double_click() 雙擊;

drag_and_drop() 拖動(dòng);

move_to_element() 鼠標(biāo)懸停。

鼠標(biāo)雙擊示例:

#定位到要雙擊的元素

qqq =driver.find_element_by_xpath("xxx")

#對(duì)定位到的元素執(zhí)行鼠標(biāo)雙擊操作

ActionChains(driver).double_click(qqq).perform()

鼠標(biāo)拖放示例:

#定位元素的原位置

element = driver.find_element_by_name("source")

#定位元素要移動(dòng)到的目標(biāo)位置

target = driver.find_element_by_name("target")

#執(zhí)行元素的移動(dòng)操作

ActionChains(driver).drag_and_drop(element, target).perform()

2.8 多層框架/層級(jí)定位

定位元素過程中經(jīng)常會(huì)遇到找不到元素的問題,出現(xiàn)該問題一般都是以下因素導(dǎo)致:

元素定位方法不對(duì)

頁面存在iframe或內(nèi)嵌窗口

頁面超時(shí)

webdriver 提供了一個(gè) switch_to_frame 方法,可以很輕松的來解決這個(gè)問題。

用法:

#先找到到 ifrome1(id = f1)

browser.switch_to_frame("f1")

同樣的,如果是內(nèi)嵌窗口:

browser.switch_to_window("f1")

2.9 Expected Conditions解析

Expected Conditions的使用場(chǎng)景有2種:

直接在斷言中使用

與WebDriverWait配合使用,動(dòng)態(tài)等待頁面上元素出現(xiàn)或者消失

相關(guān)方法:

title_is: 判斷當(dāng)前頁面的title是否精確等于預(yù)期

title_contains: 判斷當(dāng)前頁面的title是否包含預(yù)期字符串

presence_of_element_located:判斷某個(gè)元素是否被加到了dom樹里,并不代表該元素一定可見

visibility_of_element_located:判斷某個(gè)元素是否可見.可見代表元素非隱藏,并且元素的寬和高都不等于0

visibility_of:跟上面的方法做一樣的事情,只是上面的方法要傳入locator,這個(gè)方法直接傳定位到的element就好了

presence_of_all_elements_located:判斷是否至少有1個(gè)元素存在于dom樹中。舉個(gè)例子,如果頁面上有n個(gè)元素的class都是'column-md-3',那么只要有1個(gè)元素存在,這個(gè)方法就返回True

text_to_be_present_in_element:判斷某個(gè)元素中的text是否包含了預(yù)期的字符串

text_to_be_present_in_element_value:判斷某個(gè)元素中的value屬性是否包含了預(yù)期的字符串

frame_to_be_available_and_switch_to_it:判斷該frame是否可以switch進(jìn)去,如果可以的話,返回True并且switch進(jìn)去,否則返回False

invisibility_of_element_located:判斷某個(gè)元素中是否不存在于dom樹或不可見

element_to_be_clickable:判斷某個(gè)元素中是否可見并且是enable的,這樣的話才叫clickable

staleness_of:等某個(gè)元素從dom樹中移除,注意,這個(gè)方法也是返回True或False

element_to_be_selected:判斷某個(gè)元素是否被選中了,一般用在下拉列表

element_selection_state_to_be:判斷某個(gè)元素的選中狀態(tài)是否符合預(yù)期

element_located_selection_state_to_be:跟上面的方法作用一樣,只是上面的方法傳入定位到的element,而這個(gè)方法傳入locator

alert_is_present:判斷頁面上是否存在alert,這是個(gè)老問題,很多同學(xué)會(huì)問到

示例:

判斷title:title_is()、title_contains()

首先導(dǎo)入expected_conditions模塊

由于這個(gè)模塊名稱比較長(zhǎng),所以為了后續(xù)的調(diào)用方便,重新命名為EC了(有點(diǎn)像數(shù)據(jù)庫里面多表查詢時(shí)候重命名)

打開博客首頁后判斷title,返回結(jié)果是True或False

# coding:utf-8

from selenium import webdriver

from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()

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

# 判斷title完全等于

title = EC.title_is(u'百度')

print title(driver)

# 判斷title包含

title1 = EC.title_contains(u'百度')

print title1(driver)

# 另外一種寫法

r1 = EC.title_is(u'百度')(driver)

r2 = EC.title_contains(u'百度')(driver)

print r1

print r2

三、Selenium速查表

3.1 Python Webdriver Exception速查表

webdriver在使用過程中可能會(huì)出現(xiàn)各種異常,我們需要了解該異常并知道如何進(jìn)行異常處理。

異常

描述

WebDriverException

所有webdriver異常的基類,當(dāng)有異常且不屬于下列異常時(shí)拋出

InvalidSwitchToTargetException

下面兩個(gè)異常的父類,當(dāng)要switch的目標(biāo)不存在時(shí)拋出

NoSuchFrameException

當(dāng)你想要用switch_to.frame()切入某個(gè)不存在的frame時(shí)拋出

NoSuchWindowException

當(dāng)你想要用switch_to.window()切入某個(gè)不存在的window時(shí)拋出

NoSuchElementException

元素不存在,一般由find_element與find_elements拋出

NoSuchAttributeException

一般你獲取不存在的元素屬性時(shí)拋出,要注意有些屬性在不同瀏覽器里是有不同的屬性名的

StaleElementReferenceException

指定的元素過時(shí)了,不在現(xiàn)在的DOM樹里了,可能是被刪除了或者是頁面或iframe刷新了

UnexpectedAlertPresentException

出現(xiàn)了意料之外的alert,阻礙了指令的執(zhí)行時(shí)拋出

NoAlertPresentException

你想要獲取alert,但實(shí)際沒有alert出現(xiàn)時(shí)拋出

InvalidElementStateException

下面兩個(gè)異常的父類,當(dāng)元素狀態(tài)不能進(jìn)行想要的操作時(shí)拋出

ElementNotVisibleException

元素存在,但是不可見,不可以與之交互

ElementNotSelectableException

當(dāng)你想要選擇一個(gè)不可被選擇的元素時(shí)拋出

InvalidSelectorException

一般當(dāng)你xpath語法錯(cuò)誤的時(shí)候拋出這個(gè)錯(cuò)

InvalidCookieDomainException

當(dāng)你想要在非當(dāng)前url的域里添加cookie時(shí)拋出

UnableToSetCookieException

當(dāng)driver無法添加一個(gè)cookie時(shí)拋出

TimeoutException

當(dāng)一個(gè)指令在足夠的時(shí)間內(nèi)沒有完成時(shí)拋出

MoveTargetOutOfBoundsException

actions的move操作時(shí)拋出,將目標(biāo)移動(dòng)出了window之外

UnexpectedTagNameException

獲取到的元素標(biāo)簽不符合要求時(shí)拋出,比如實(shí)例化Select,你傳入了非select標(biāo)簽的元素時(shí)

ImeNotAvailableException

輸入法不支持的時(shí)候拋出,這里兩個(gè)異常不常見,ime引擎據(jù)說是僅用于linux下對(duì)中文/日文支持的時(shí)候

ImeActivationFailedException

激活輸入法失敗時(shí)拋出

ErrorInResponseException

不常見,server端出錯(cuò)時(shí)可能會(huì)拋

RemoteDriverServerException

不常見,好像是在某些情況下驅(qū)動(dòng)啟動(dòng)瀏覽器失敗的時(shí)候會(huì)報(bào)這個(gè)錯(cuò)

3.2 Xpath&Css定位方法速查表

描述

Xpath

Css

直接子元素

//div/a

div > a

子元素或后代元素

//div//a

div a

以id定位

//div[@id='idValue']//a

div#idValue a

以class定位

//div[@class='classValue']//a

div.classValue a

同級(jí)弟弟元素

//ul/li[@class='first']/following-

ul>li.first + li

屬性

//form/input[@name='username']

form input[name='username']

多個(gè)屬性

//input[@name='continue' and

input[name='continue'][type='button

第4個(gè)子元素

//ul[@id='list']/li[4]

ul#list li:nth-child(4)

第1個(gè)子元素

//ul[@id='list']/li[1]

ul#list li:first-child

最后1個(gè)子元素

//ul[@id='list']/li[last()]

ul#list li:last-child

屬性包含某字段

//div[contains(@title,'Title')]

div[title*="Title"]

屬性以某字段開頭

//input[starts-with(@name,'user')]

input[name^="user"]

屬性以某字段結(jié)尾

//input[ends-with(@name,'name')]

input[name$="name"]

text中包含某字段

//div[contains(text(), 'text')]

無法定位

元素有某屬性

//div[@title]

div[title]

父節(jié)點(diǎn)

//div/..

無法定位

同級(jí)哥哥節(jié)點(diǎn)

//li/preceding-sibling::div[1]

無法定位

Tips

這里介紹一款在線代碼美化工具,在線訪問地址:

https://carbon.now.sh

另外如果使用Vscode的話,可以安裝對(duì)應(yīng)的插件進(jìn)行快速在線美化。

打開Vscode,在插件欄輸入:carbon-now-sh

點(diǎn)擊安裝

點(diǎn)擊重新加載即可安裝

按快捷鍵ALT+CMD+A(win系統(tǒng)下使用:ALT+WIN+A)即可

效果預(yù)覽:

carbon (1).png

總結(jié)

以上是生活随笔為你收集整理的selenium python_Python+Selenium基础入门及实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

91看片成人 | 激情xxxx| 在线观看成年人 | 婷婷婷国产在线视频 | 久久成人高清 | 欧美日本在线观看视频 | 久久综合九色综合久久久精品综合 | av千婊在线免费观看 | 一级黄色片在线免费观看 | 国产精品av免费观看 | 成人黄色免费观看 | 日韩久久久久久 | 久久99精品国产99久久 | 欧美精品亚州精品 | 欧美在线free | 国产99久久久国产精品免费看 | 精品美女在线视频 | 成人午夜片av在线看 | 成年人免费在线观看网站 | 91超级碰碰 | 久久夜视频 | 欧美久久九九 | 欧美日本国产在线观看 | 国产999视频 | 在线看一区 | 久久久久久欧美二区电影网 | 91探花国产综合在线精品 | 久久资源总站 | 伊人小视频| 国产无套一区二区三区久久 | 成人免费在线播放 | 国产超碰在线 | 国产资源在线视频 | 国产高清在线视频 | 欧美永久视频 | 国产一级黄大片 | 中文字幕人成一区 | 视频在线国产 | 91精品视频在线 | 在线观看日韩视频 | 九九视频在线观看视频6 | 精品久久久久久国产偷窥 | 国产精品理论片 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 久影院| 91免费试看 | 亚洲黄色成人 | 麻豆mv在线观看 | 91久久爱热色涩涩 | 亚洲国产网站 | 久久久久久黄色 | 亚洲精品视频久久 | 91看片在线播放 | 亚洲精品玖玖玖av在线看 | 91精品系列 | 日本久久久久久久久久 | 久久精品一区二区三区中文字幕 | 中文久草| 在线观看一区二区视频 | 成av人电影 | 最新av在线免费观看 | 亚洲色图27p| 91精品色 | 欧美日韩国产精品一区二区三区 | 亚洲精品国偷拍自产在线观看 | 99麻豆视频 | 四虎国产精品永久在线国在线 | 91视频88av | 在线视频日韩 | 亚洲 在线| 日韩中文字幕国产精品 | 国产欧美日韩视频 | 九九交易行官网 | 激情欧美日韩一区二区 | 爱爱av在线 | 97色免费视频 | 久久综合久久久 | 国产性xxxx| 久久精品久久精品久久39 | www.一区二区三区 | 中文字幕在线观看完整 | 午夜精品av在线 | 天天天在线综合网 | 日韩字幕在线观看 | 久久久私人影院 | 美女视频国产 | 天天摸夜夜操 | 久久a国产 | 97超碰人人网 | 综合久久2023 | 国产精品 亚洲精品 | 伊人www22综合色 | 91精品一区在线观看 | 亚洲精品成人av在线 | 国产黄免费看 | 久草在线看片 | 久久精品国产一区二区电影 | 日韩中文字幕a | 国产热re99久久6国产精品 | 一区久久久 | 69视频网站 | 亚州人成在线播放 | 国产成人久久久久 | 国产一级淫片免费看 | 国产精品电影一区二区 | 精品少妇一区二区三区在线 | 亚洲精品久久久久中文字幕二区 | 国产精品久久av | 欧美天天综合网 | 97电院网手机版 | 免费a现在观看 | 97狠狠干| 美女禁18| 天天激情在线 | 久久国产露脸精品国产 | 亚洲视频在线观看 | 亚洲人成在线观看 | 国产免费专区 | 成年人黄色在线观看 | 成人免费视频免费观看 | 丁香婷婷色 | 国产1区在线 | 天天操天天插 | 亚洲色图激情文学 | 亚洲激情 欧美激情 | 国内视频一区二区 | 91天堂影院 | 成人av电影在线观看 | 在线播放 亚洲 | 国产精品亚洲片夜色在线 | 国产无套视频 | 日本中文不卡 | 一级黄色毛片 | 日韩小视频 | 91九色porny蝌蚪主页 | 精品亚洲免费 | 国产精品午夜免费福利视频 | 久草久热 | 国产高清不卡在线 | 色五月成人 | 蜜桃麻豆www久久囤产精品 | 天天综合网~永久入口 | 亚洲男男gaygay无套 | 欧美在线观看视频一区二区 | 91热这里只有精品 | 九九色在线观看 | 97福利在线 | 亚洲精品一区中文字幕乱码 | 97超碰在线视 | 久久久久久久久久久综合 | 成人黄色国产 | 久久久www成人免费毛片 | 国产视频亚洲视频 | 久草视频中文在线 | 特级毛片网站 | 国产精品99精品 | 日韩欧美精品免费 | 欧美一进一出抽搐大尺度视频 | 久久成人高清视频 | 一区二区三区免费在线 | 婷婷久久久 | 国产视频中文字幕在线观看 | 少妇搡bbbb搡bbb搡aa | 久久综合九色综合97_ 久久久 | 久久日韩精品 | av一级一片 | 成人av免费播放 | 国产精品色婷婷 | 国产精品日韩欧美一区二区 | 在线看片日韩 | 黄色影院在线免费观看 | 九九视频精品在线 | 国产精品 国产精品 | 久久免费看片 | 911精品视频| 国产中文字幕网 | 久久一区二区三区国产精品 | 日韩精品播放 | 91在线视频 | 国产成人精品亚洲 | 玖玖国产精品视频 | 四虎在线免费观看 | 激情欧美在线观看 | 成人av在线资源 | 日韩免 | 日韩91精品 | 伊人网综合在线观看 | 免费色黄 | 欧美亚洲精品一区 | 在线观看中文字幕dvd播放 | 一区二区三区电影大全 | av大全免费在线观看 | 国产精品都在这里 | 精品国产精品国产偷麻豆 | 久久国产一区二区三区 | 亚洲精品在线观看不卡 | 色多视频在线观看 | 最近免费中文视频 | 国产精品久久久久久久av电影 | 欧美福利在线播放 | 成年人看片 | 亚洲美女视频在线观看 | 国产精品二区在线观看 | 人人超碰在线 | 国产免费不卡av | 亚洲精品国产综合99久久夜夜嗨 | 午夜视频黄 | 在线播放 日韩专区 | 视频在线播放国产 | 免费看三片 | 青青河边草免费直播 | 成人性生交视频 | 中文字幕乱码亚洲精品一区 | 99综合久久 | 97在线免费观看视频 | 久久久久久久久久电影 | 色婷婷97 | va视频在线 | 91在线最新 | 欧美精品一区二区在线观看 | 国产第一页在线观看 | 欧美视频日韩 | 午夜.dj高清免费观看视频 | 日韩午夜电影院 | 成人午夜精品福利免费 | 日本性生活一级片 | 久草影视在线观看 | av看片网址 | 国产亚州精品视频 | 一区二区三区免费在线观看 | av成人动漫 | 欧美性久久久 | 午夜久久精品 | 国产免费叼嘿网站免费 | 日本在线观看中文字幕 | 丁香激情网 | 精品乱码一区二区三四区 | 精品影院一区二区久久久 | 国产精品中文在线 | 欧美另类网站 | 成年人免费在线观看网站 | 狠狠综合久久av | 欧美久草视频 | 在线成人观看 | 中文在线免费视频 | 国产成人在线观看免费 | 免费福利片 | 超碰在线日本 | 精品一区二区视频 | 亚洲3级 | 久久免费久久 | 久久久久久久18 | 午夜18视频在线观看 | 国产在线精品一区二区三区 | 人人爽人人澡人人添人人人人 | 日日日干 | 久久视频在线免费观看 | 久久影院亚洲 | 美女久久久久久久久久 | 91中文字幕永久在线 | 99久久综合狠狠综合久久 | 亚洲尺码电影av久久 | 亚洲精品66 | 国产.精品.日韩.另类.中文.在线.播放 | 中文字幕一区二区在线播放 | 日韩免费高清在线观看 | 人人擦| 欧美成人h版电影 | 中文字幕久久精品亚洲乱码 | 国内精品久久影院 | www99久久| av福利在线播放 | 亚洲一区av| 欧美日韩中文字幕综合视频 | 黄污在线观看 | 日韩高清在线一区二区三区 | 99精品视频在线播放免费 | 天天综合网天天综合色 | 国内精品久久久久久久久久清纯 | 国产精品不卡一区 | 中文av日韩| 久久久久国产一区二区 | 久久视频在线视频 | 免费三级骚| 亚洲成人午夜av | 成人三级av | 色久天 | 美女网站在线观看 | 日本成址在线观看 | 欧美激情精品久久久久久 | 欧美久久久一区二区三区 | 97电影网站 | 伊人中文网 | 天天爽人人爽夜夜爽 | 亚洲久草视频 | 久久艹久久 | 久久精品欧美日韩精品 | 亚洲免费在线观看视频 | av免费观看网址 | 国产午夜三级一区二区三 | 日韩理论电影在线 | 色婷婷激情 | 久久综合久久久久88 | 久久99久久精品 | 狠狠色丁香久久婷婷综 | 国产精品免费在线视频 | 亚洲国产中文字幕在线观看 | 国产精品久久久久免费观看 | 五月婷婷六月丁香 | 色视频成人在线观看免 | 国产精品99久久久精品免费观看 | 国产超碰97| 亚洲亚洲精品在线观看 | 99久久激情 | 欧美精品生活片 | 日本电影久久 | 新版资源中文在线观看 | 久久久久成人精品亚洲国产 | 天天操夜夜叫 | 午夜精品久久久久久久久久 | 成人一区二区在线 | 区一区二区三在线观看 | 国产在线色 | 婷婷在线免费观看 | 97夜夜澡人人双人人人喊 | 日本视频久久久 | 国产精品资源在线 | 美女黄频在线观看 | 亚洲精品午夜久久久久久久久久久 | 波多野结衣动态图 | 欧产日产国产69 | 国内精品视频在线播放 | 久久综合九色99 | 国产精品免费观看久久 | 国产精品精品国产 | 国产91免费在线 | 天海翼一区二区三区免费 | 波多野结衣在线观看视频 | 国产色视频网站2 | 成人18视频 | 国产精品不卡av | 日韩二区在线 | 色综合狠狠干 | 久久久国产日韩 | 国产片免费在线观看视频 | 国产亚洲欧美日韩高清 | 久草视频免费看 | www.国产在线| 超碰在线观看99 | 精品999| 国产精成人品免费观看 | 精品在线二区 | 青春草国产视频 | 亚洲一区网 | 一区二区视 | 国产精品视频999 | 中文字幕一区二区三 | 黄色大全免费观看 | 国产黄大片在线观看 | 亚洲精品88欧美一区二区 | 久久久久久久久久久久99 | 日本精品一区二区在线观看 | 国产精品免费不卡 | 国产日韩在线看 | 成人久久视频 | 久久在线视频在线 | 亚洲精品在线电影 | 美女黄久久 | 国产黑丝袜在线 | 国产高清不卡一区二区三区 | 日韩黄色免费电影 | 四虎成人精品在永久免费 | 欧美日韩二区在线 | 中文字幕丝袜制服 | 看黄色91 | 国产小视频国产精品 | 精品99999| 91av视频在线观看免费 | 91精品在线免费视频 | 在线看片一区 | 亚洲aⅴ一区二区三区 | 亚洲一区日韩在线 | 欧美日韩国产在线 | 91av网址 | 久久艹艹 | 久久黄色精品视频 | 亚洲精品9 | 正在播放国产一区 | 久久久国产精品一区二区三区 | 99精品在线免费 | 国产免费成人 | 成人av动漫在线 | 日韩av一区二区三区四区 | 久久涩视频 | 免费视频一区二区 | 亚洲精品视频第一页 | 天天操天| www.av免费 | 一区二区三区电影在线播 | 久久久影院官网 | 中文字幕免费一区 | 亚洲精品午夜aaa久久久 | 九九免费精品 | av官网 | 国产精品午夜久久 | 日韩欧美精品在线 | 日韩网站在线播放 | 激情五月开心 | 综合色天天 | 狠狠狠狠狠狠天天爱 | av中文字幕不卡 | av电影免费 | 99爱视频| 五月婷婷六月综合 | 中文字幕一区二区三区乱码在线 | 午夜精品久久久久久久99水蜜桃 | 久操视频在线观看 | 久久婷婷综合激情 | 在线观看黄av | 五月天综合在线 | 激情婷婷av | 色综合久久88色综合天天人守婷 | 天天操 夜夜操 | 国产特级毛片aaaaaa高清 | 久久av观看 | 伊人色综合久久天天网 | 国产黄色片免费 | 伊人影院99 | 久久精品久久精品久久39 | 6080yy精品一区二区三区 | 免费在线观看av网站 | 波多野结衣精品 | 在线观看一区 | 午夜婷婷综合 | 精品免费99久久 | 黄色小网站免费看 | 在线观看av中文字幕 | 激情婷婷在线观看 | 精品自拍sae8—视频 | 日韩精品最新在线观看 | 九九九热精品 | 91日韩免费 | 一区二区三区播放 | 亚洲人人av | 久久午夜精品影院一区 | 欧美精品v国产精品v日韩精品 | 精品一区 精品二区 | 精品国产一区二区三区在线 | 亚洲一区动漫 | 久久久久久免费毛片精品 | 黄色中文字幕 | 久久国产精品99久久久久久丝袜 | aaa毛片视频| 亚洲国产影院av久久久久 | 五月天综合网站 | 亚洲 欧美 国产 va在线影院 | 99 久久久久 | av在线看网站 | 亚洲国产精品久久久 | 国产精品成人在线观看 | 国产视频一区在线播放 | 国产精品永久久久久久久久久 | 日日夜色 | 日韩欧美综合在线视频 | 中文字幕乱码在线播放 | 国产69熟| 亚洲,国产成人av | 在线国产一区 | 国产自在线观看 | 亚洲精品视频在线 | 色94色欧美 | 91麻豆国产福利在线观看 | 高清不卡一区二区三区 | 国产精品12 | 亚洲国产片| 久久av在线 | 高清美女视频 | 超碰在线最新地址 | 欧美一区三区四区 | 三上悠亚一区二区在线观看 | 在线观看 亚洲 | 91av在线免费观看 | 亚洲国产精品电影 | 亚洲精品视频在线免费播放 | 99精品系列 | 亚洲成年片 | www夜夜操com | 日韩免费一区二区在线观看 | 欧美 日韩精品 | 婷婷伊人五月 | 婷婷中文字幕 | 狠狠色丁香婷婷综合视频 | 色永久免费视频 | 国产精品国产毛片 | 999国产在线| 中文字幕乱码亚洲精品一区 | 免费观看av网站 | 最近最新最好看中文视频 | 九九热av | 欧美精品久久久久久久久久丰满 | 欧美成人精品在线 | 国产黄色大片 | 午夜美女福利 | 久久精品中文字幕免费mv | 人人看人人爱 | 国产精品久久99 | 久久综合精品一区 | 2024国产在线 | 美女一级毛片视频 | 亚州精品在线视频 | 日躁夜躁狠狠躁2001 | 国产精品高潮久久av | 免费一级片视频 | 国产日韩精品久久 | 国产精品日韩精品 | 国产手机精品视频 | 国产在线 一区二区三区 | 色婷婷狠狠五月综合天色拍 | 最近中文字幕mv | 久久av一区二区三区亚洲 | 超碰在线公开免费 | 国产天天综合 | 亚洲永久精品国产 | 欧美极品少妇xbxb性爽爽视频 | a精品视频 | 国产视频在线观看一区二区 | 中文字幕在线观看你懂的 | 在线免费观看视频一区 | 日韩理论片在线观看 | 亚洲性少妇性猛交wwww乱大交 | 久草网站在线 | 99精品免费 | 综合色亚洲 | 久久国产精品成人免费浪潮 | 激情久久五月天 | 久久伦理视频 | 日韩av偷拍 | 欧美狠狠操| 91一区啪爱嗯打偷拍欧美 | 91免费观看视频网站 | av在线影视 | 天天综合网在线 | 欧美另类老妇 | 欧美一区二区三区免费看 | 男女免费视频观看 | 成人免费xxxxxx视频 | 最新极品jizzhd欧美 | 亚洲黄色高清 | 91激情视频在线观看 | 久久精品一区二 | 日韩av高潮 | 最近最新中文字幕 | 亚洲精品理论片 | 亚洲精品欧美精品 | 日批视频国产 | 亚洲视频中文 | 精品国产电影一区二区 | 人人狠狠综合久久亚洲 | 天天天在线综合网 | 色婷婷啪啪免费在线电影观看 | 91毛片在线| 看污网站 | 97人人精品| 久久爱www.| 久久高清视频免费 | 国产精品密入口果冻 | 国产一级精品绿帽视频 | 91九色国产视频 | 国产高清视频在线播放 | 日韩二级毛片 | 国产欧美中文字幕 | 男女拍拍免费视频 | 国产免费小视频 | 日本女人的性生活视频 | 国产一区二区三区免费在线观看 | 亚洲年轻女教师毛茸茸 | 久久婷婷综合激情 | 激情久久久久久久久久久久久久久久 | 亚洲午夜精品一区 | 在线免费视频a | 亚洲精品99久久久久久 | 国产高清免费视频 | 美女黄网站视频免费 | 国产欧美最新羞羞视频在线观看 | 福利av在线 | 五月天天色 | 在线视频电影 | 热久久视久久精品18亚洲精品 | 国产一级在线视频 | 精品人人人 | 婷婷丁香五| 免费在线精品视频 | 国产精品久久一区二区无卡 | 天天爽人人爽 | 婷婷丁香在线 | av免费在线看网站 | 国内免费久久久久久久久久久 | 久久精品一二三 | 成人三级黄色 | 色综合久久网 | 特级毛片爽www免费版 | 国产96视频 | 五月婷婷六月丁香激情 | 肉色欧美久久久久久久免费看 | 亚洲综合在 | 久草热久草视频 | 在线观看黄色av | 探花视频网站 | 99久久日韩精品免费热麻豆美女 | 亚洲精品视频在线观看视频 | 国产成a人亚洲精v品在线观看 | 免费av在线网站 | 国产成人综合精品 | 亚洲h色精品 | 国产午夜精品一区二区三区在线观看 | 久久99久久99精品免观看粉嫩 | 精品国产aⅴ麻豆 | 青青射 | 精品av在线播放 | 狠狠躁18三区二区一区ai明星 | 亚洲精品视频大全 | 九色视频网 | 91精选在线 | 在线观看日韩中文字幕 | 久久综合九色综合97婷婷女人 | 精品一区二区在线免费观看 | 日韩一级电影在线 | 91视频在线观看免费 | 欧美成人精品在线 | 亚洲一区二区三区四区精品 | 中文字幕精品久久 | 欧美最猛性xxxxx亚洲精品 | 亚洲成人动漫在线观看 | 久久99精品国产99久久6尤 | 91激情 | 综合久久久久久久久 | 综合色久| 亚洲午夜久久久影院 | 手机在线小视频 | 亚洲一级久久 | 成人永久视频 | 黄色片网站大全 | 久久久精品小视频 | 密桃av在线| 日韩av片无码一区二区不卡电影 | 国产一区高清在线 | 天天摸日日摸人人看 | 在线观看日本高清mv视频 | а中文在线天堂 | 亚洲伊人网在线观看 | av在线激情 | 成人一级在线观看 | 日日麻批40分钟视频免费观看 | 国产一区二区三区免费在线观看 | 日韩欧美一区二区三区在线 | 二区三区中文字幕 | 国产精品久久久久久久久免费 | 国产一区二区不卡视频 | 日日干天天爽 | 精品久久一级片 | 日韩av免费大片 | 亚洲视频一区二区三区在线观看 | 成人久久国产 | 成人a视频在线观看 | 日韩欧美一区二区在线观看 | 99久久婷婷国产综合精品 | 亚洲精品久久久久久中文传媒 | 在线观看一区 | h视频在线看 | 91香蕉视频 | 国内综合精品午夜久久资源 | 精久久久久 | 中文字幕在线一区二区三区 | 99精品在线视频观看 | 久久久精品视频网站 | 91在线免费视频 | 视频国产在线观看18 | 久久这里只有精品久久 | 精品国产一区二区三区久久久蜜月 | av电影在线观看 | 国产精品片 | 亚洲专区中文字幕 | 日韩精品在线免费观看 | 天天骚夜夜操 | 一本色道久久综合亚洲二区三区 | 国产亲近乱来精品 | 欧美成人基地 | 伊人五月天.com | 成年在线观看 | 日韩欧美精品在线观看视频 | av在线8| 日本特黄特色aaa大片免费 | www日韩精品| 黄色精品国产 | 日韩精品一区二区三区电影 | 国模精品在线 | 天天做天天爱天天爽综合网 | 一级α片免费看 | 免费观看黄色12片一级视频 | 亚洲第一久久久 | 96久久精品 | 国产xxxx | 国产91粉嫩白浆在线观看 | 亚洲蜜桃在线 | 久久人人爽人人片av | 综合激情伊人 | 成片视频免费观看 | 麻豆91网站 | 亚洲黄色影院 | 国产精品爽爽久久久久久蜜臀 | 97国产超碰在线 | 国产精品一区二区av麻豆 | 99欧美精品 | 999久久久 | 精品二区视频 | 天天狠狠 | 四月婷婷在线观看 | 色婷婷午夜 | 狠狠操导航 | 中文字幕在线观看免费 | www国产一区| 国产在线91精品 | 久久99久久精品 | 久久深爱网 | 超碰成人网 | 中文字幕在线国产 | 日本久久中文字幕 | 黄色免费观看 | 欧美视频99 | 久久久久国产成人免费精品免费 | 成人综合婷婷国产精品久久免费 | 国产精品一级视频 | 久久久精品影视 | 成年人免费在线播放 | 日韩黄色一级电影 | 福利一区二区在线 | 亚洲乱亚洲乱亚洲 | 欧美91视频 | 国产又粗又硬又长又爽的视频 | 日韩欧美精品在线视频 | 久草精品在线观看 | 亚洲欧美色婷婷 | 婷婷丁香在线 | 免费看黄在线观看 | 日韩视频中文字幕在线观看 | 日韩中文字幕视频在线观看 | 久草在线费播放视频 | 欧美日比视频 | 日韩在线视频免费播放 | 国产精品短视频 | 国产一级一级国产 | 97超视频在线观看 | 综合久久久 | 福利av在线 | 国产成人在线播放 | 国产福利av| 日韩三级视频在线观看 | 亚洲精品一区二区18漫画 | 免费视频国产 | 久草久草在线观看 | 黄色电影网站在线观看 | 一级黄色片在线观看 | 综合精品在线 | 免费看黄电影 | 波多野结衣日韩 | 国产精品久久久av久久久 | 久久免费激情视频 | 中文字幕免费观看全部电影 | 亚洲永久精品在线 | 日本福利视频在线 | 激情久久五月天 | av在线电影网站 | 日韩精品视频在线观看免费 | 成年人毛片在线观看 | 久久精品99视频 | 成人va视频 | 精品九九九 | 91日韩精品视频 | 美女福利视频一区二区 | 国产在线精品区 | 中文字幕888 | 午夜久操 | 天天拍天天色 | 国产精品毛片久久久 | 91喷水| 99久久国产免费免费 | 亚洲婷婷在线视频 | 99久久99久久精品国产片果冰 | 2020天天干天天操 | av免费电影网站 | 久草a在线 | 在线免费观看视频你懂的 | 中文字幕丰满人伦在线 | 国产免费不卡av | 国产日韩视频在线 | 午夜精品视频一区二区三区在线看 | 激情综合色播五月 | 美女久久久久 | 久久综合久久综合久久 | 欧美孕妇视频 | 日韩理论 | 丁香花在线视频观看免费 | 热久在线 | 婷婷丁香激情综合 | 亚洲少妇久久 | 中文字幕精品www乱入免费视频 | 婷婷色六月天 | 国产精品入口传媒 | 在线黄色毛片 | 五月天亚洲婷婷 | 九九视频免费观看视频精品 | 一区二区三区四区免费视频 | 国产无限资源在线观看 | 亚洲精品激情 | 91在线欧美 | 亚洲伦理一区二区 | 在线久久 | 国产免费xvideos视频入口 | 久久国产一二区 | 黄色免费观看 | 成人少妇影院yyyy | 天天操婷婷 | 色欧美视频 | 人成在线免费视频 | 中文字幕免费一区二区 | 99久久精品电影 | 久99久在线视频 | 国产精品嫩草影院123 | 日韩国产欧美在线播放 | 香蕉视频导航 | 亚洲国产精品资源 | 永久免费的啪啪网站免费观看浪潮 | 亚洲专区路线二 | 麻豆一二 | 欧美日韩99| 国产精品久久久久久一二三四五 | 久久精品视频3 | 岛国大片免费视频 | 欧美精品二区 | 精品久久毛片 | 一区二区三区免费在线观看视频 | 日韩素人在线观看 | 成人观看| 亚洲一区二区三区四区在线视频 | 亚洲精选国产 | 午夜av免费在线观看 | 亚洲精品99久久久久久 | 国产精品对白一区二区三区 | 国产午夜剧场 | 午夜av在线免费 | 福利久久| 亚洲男模gay裸体gay | 黄色午夜 | 奇米777777| 成人va在线观看 | www视频在线播放 | 成人av电影网址 | 丁香视频免费观看 | 精品久久久久久久久久久久久久久久久久 | 日韩成人精品一区二区 | 黄色av高清| 国产小视频免费观看 | 精品人人人人 | 一级理论片在线观看 | 96亚洲精品久久久蜜桃 | 亚洲精选视频在线 | 福利区在线观看 | 日本三级大片 | 日韩av高清在线观看 | 亚洲精品中文字幕视频 | 97电影在线看视频 | 久热色超碰 | 中文字幕在线观看一区二区三区 | 在线观看色网 | 日本精品一 | 欧美日韩三区二区 | 成人小视频在线观看免费 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 婷婷综合久久 | 91麻豆网 | 999成人| 激情 亚洲 | 97视频在线免费 | 一区二区三区影院 | 韩日成人av | 日免费视频 | 日韩精品在线观看视频 | 色婷婷av国产精品 | av色综合网 | 99亚洲国产| 欧美一级片播放 | 五月开心六月伊人色婷婷 | 亚洲人成人99网站 | 亚洲欧美经典 | 99riav1国产精品视频 | 久草在线免费看视频 | 久久天堂亚洲 | 亚洲精品国产欧美在线观看 | 久久黄色精品视频 | 伊人影院得得 | 精品国产乱子伦一区二区 | 久久久99精品免费观看 | 国产精品亚州 | 日韩欧美黄色网址 | 色婷婷国产精品一区在线观看 | 91精品啪啪 | 伊人国产在线播放 | avsex| 久久在线影院 | www.黄色在线| 亚洲小视频在线观看 | 久久免费的视频 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 欧美日韩一级视频 | 日韩电影一区二区三区在线观看 | 久久免费精品视频 | www.久草.com| 国产精品久久久一区二区三区网站 | 国产在线精品区 | 黄色影院在线免费观看 | 人人艹视频 | 天天操天天干天天综合网 | 亚州视频在线 | 久久精品直播 | 亚洲观看黄色网 | 最新av在线免费观看 | 2023亚洲精品国偷拍自产在线 | 天天色成人网 | 久久一区二区三区日韩 | 亚洲少妇激情 | 制服丝袜成人在线 | av成人动漫| 天天操天天色天天 | 欧美性生活免费看 | 国产系列 在线观看 | 96香蕉视频 | 久久免费99精品久久久久久 | 五月天狠狠操 | 国产一级精品在线观看 | 五月激情亚洲 | 亚洲成av人影院 | 亚洲影视九九影院在线观看 | 五月开心六月婷婷 | 亚洲激情校园春色 | 久久尤物电影视频在线观看 | 中文字幕一区二区三区乱码在线 | 日韩在线免费 | 国产免费亚洲高清 | 日韩亚洲国产中文字幕 | 精品国产黄色片 | 中文字幕观看在线 | 四虎精品成人免费网站 | 中文字幕日韩av | 一区二区三区精品在线 | 欧美成人91 | 国产高清在线不卡 | 成人a级网站| 中文伊人 | 久久免费a| 久久综合导航 | 天天操·夜夜操 | 午夜色大片在线观看 | 在线观看黄 | 午夜电影久久久 | 久久超级碰 | 日韩免费不卡av | 日韩精品免费在线观看视频 | 久久蜜臀av | 欧美另类sm图片 | 欧美久久久久 | 午夜久久电影网 | 免费在线观看av | 在线观看免费观看在线91 | 国产成人1区 | 99在线视频观看 | 欧美综合在线观看 | 一区二区三区手机在线观看 | 国产涩涩在线观看 | 91精品国产乱码久久桃 | 日韩视| 亚洲国产精彩中文乱码av | 天天艹天天 | 免费三级骚 | 亚洲精品欧美视频 | 国产精品青草综合久久久久99 | 香蕉视频免费看 | 伊人色综合久久天天网 | 成人h在线 | 欧美在线观看禁18 | 五月天久久狠狠 | 伊人丁香 | 色综合久久88色综合天天免费 | 国内精品久久久久影院优 | 91av电影| 丁香婷婷综合激情五月色 | 最新国产精品拍自在线播放 | 九九久久久久久久久激情 | 国产在线不卡视频 |