中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

高德地圖可以搜索國外嗎360搜索引擎優(yōu)化

高德地圖可以搜索國外嗎,360搜索引擎優(yōu)化,鎮(zhèn)江網(wǎng)站制作費用,石河子網(wǎng)站制作新建項目 New Project 新建一個python代碼文件 file-new-python file 會自動創(chuàng)建一個.py后綴的代碼文件 注意:命名規(guī)則,包含字母、數(shù)字、下劃線,不能以數(shù)字開頭,不能跟python關(guān)鍵字或包名重復(fù)。 ********************華麗分割線********************…

新建項目

New Project

新建一個python代碼文件

file-new-python file 會自動創(chuàng)建一個.py后綴的代碼文件

注意:命名規(guī)則,包含字母、數(shù)字、下劃線,不能以數(shù)字開頭,不能跟python關(guān)鍵字或包名重復(fù)。

********************華麗分割線******************************************************

pycharme常用功能

1.注釋:

? ? ? ? 單行注釋:以#+一個空格開頭??旖萱I:光標(biāo)放在需要注釋的行,Ctrl+/即可將本行全部注釋掉

? ? ? ? 多行注釋:使用三個雙引號包裹起來的內(nèi)容,可以隨意換行,都是注釋

? ? ? ? ? ? ? ? ? ? ? ? 通常用于文件開頭,描述該文件所寫內(nèi)容概括,或用于文檔注釋

? ? ? ? ? ? ? ? ? ? ? ? 什么是文檔注釋:寫在類或方法的聲明代碼的下一行,用來描述類或函數(shù)的功能或注意事項的注釋,稱為文檔注釋.

2.波浪線

? ? ? ? 紅色:表示代碼存在邏輯錯誤或依賴錯誤,無法執(zhí)行.必須處理

? ? ? ? 黃色:表示代碼存在引用錯誤或使用格式錯誤,缺少參數(shù)等,影響執(zhí)行結(jié)果,必須處理

? ? ? ? 灰色:表示代碼格式不符合PEP8規(guī)范,存在格式錯誤,不影響代碼執(zhí)行,使用Ctrl+Alt +L可以自動調(diào)整格式符合PEP8規(guī)范.

? ? ? ? 綠色:表示代碼存在單詞拼寫錯誤,不影響代碼執(zhí)行

3.快速導(dǎo)包

? ? ? ? 當(dāng)代碼需要導(dǎo)包時,將光標(biāo)移動到需要導(dǎo)包的關(guān)鍵字上,Ctrl+Alt+Enter或Ctrl+Alt+空格鍵,可以實現(xiàn)自動導(dǎo)包

************************華麗分割線**********************************************

WebUI自動化基礎(chǔ)代碼

Web自動化代碼實現(xiàn)基本邏輯

1.導(dǎo)包:導(dǎo)入webdriver包(熟練以后可以先不導(dǎo)包,寫到webdriver以后使用自動導(dǎo)包)

2.實例化瀏覽器對象:使用webdriver的不同驅(qū)動類,實例化一個瀏覽器對象,使用一個變量接受,供后續(xù)調(diào)用.通常將此變量命名為driver(具有明顯意義代指瀏覽器驅(qū)動的實例化對象,好記,也方便其他人閱讀)

3.使用瀏覽器對象,調(diào)用get()方法,打開想要測試的頁面

? ? ? ? 注意:get()的參數(shù)是URL,必須攜帶協(xié)議,如果使用本地文件則注意(\在python代碼中被識別為轉(zhuǎn)義字符,如果本地文件路徑是\形式則需要在URL字符串前加一個r,將\修飾為原始字符?;蛘咴赲前再加一個\,將\轉(zhuǎn)義)最簡單的方式是,先用瀏覽器打開該界面,在瀏覽器地址欄復(fù)制URL,這時候復(fù)制的內(nèi)容就是瀏覽器可以理解的形式了。

4.瀏覽器打開時默認是小窗口模式,為方便測試操作,使用瀏覽器對象調(diào)用maximize_window()方法,將窗口最大化.

5.為防止網(wǎng)頁加載緩慢導(dǎo)致元素定位失敗,添加一個等待代碼,在元素未加載時等待元素加載完成.

6.實現(xiàn)測試需求

7.測試結(jié)束后關(guān)閉瀏覽器,防止瀏覽器打開過多導(dǎo)致電腦崩潰

# 導(dǎo)包
from time import sleepfrom selenium import webdriver# 實例化瀏覽器對象
driver = webdriver.Chrome()
# 打開瀏覽器
driver.get('https://www.baidu.com')
# 展示效果
sleep(1)
# 瀏覽器窗口最大化
driver.maximize_window()
# 隱式等待
driver.implicitly_wait(10)
sleep(2)
# 實現(xiàn)需求# 關(guān)閉瀏覽器
driver.quit()

元素定位

WebUI自動化的最關(guān)鍵內(nèi)容就是,找到想要測試的元素,對元素進行操作

1.獲取元素屬性值

想要編寫元素定位代碼來找到元素,首先我們應(yīng)該先獲取元素的各種屬性值,將這些屬性值作為參數(shù)傳遞給定位方法,那么,我們該如何獲取元素的屬性值呢?方法如下(以Chrome為例):

方法一:

打開瀏覽器,進入想要測試的頁面,鼠標(biāo)放在在想要測試的元素上右鍵,選擇“檢查”,頁面會自動打開一個代碼顯示欄(開發(fā)者工具),并且自動定位到我們選擇的這個元素的代碼上,這樣就可以看到元素的實際代碼啦。

方法二:

如果遇到某些元素?zé)o法右鍵檢查(即右鍵菜單中沒有“檢查”這一選項),可以在瀏覽器的工具欄點擊三個點的標(biāo)志(頁面右上角)選擇-更多工具-開發(fā)者工具,或者直接在鍵盤按F12鍵,打開開發(fā)者工具。

打開開發(fā)者工具后選擇左上角帶一個小箭頭的圖標(biāo),點擊

這時會進入一個定位模式,直接將鼠標(biāo)放在想定位的元素上,下方代碼就會跟隨鼠標(biāo)的動作自動定位到鼠標(biāo)指的元素。

2.定位元素

selenium框架提供了很多定位元素的方法,共分為以下八種:

? ? ? ? id定位

????????name定位

? ? ? ? class_name定位

? ? ? ? tag_name定位

? ? ? ? link_text定位

? ? ? ? partail_link_text定位

? ? ? ? XPath定位

? ? ? ? CSS定位

(1)id定位:

????????diver.find_element_by_id("元素的id值")

? ? ? ? ? ? ? ? 注意:因為id屬性本身具備唯一性的特點,所以使用id定位一定可以唯一定位到一個元素。所以在進行元素定位時,只要元素有id屬性,則優(yōu)先使用id定位。

(2)name定位:??

????????driver.find_element_by_name('元素的name屬性值')

? ? ? ? ? ? ? ? 注意:使用name定位時一定要保證該元素的name在整個頁面是唯一的,如果不唯一則默認只能找到本頁面name值是這個值的第一個元素。

(3)class_name定位:

????????driver.find_element_by_class_name('元素的class屬性值')

? ? ? ? ? ? ? ? 注意:如果元素有多個class值,只能選擇其中一個(具備全局唯一性的那個)。

(4)tag_name定位:

????????driver.find_element_by_tag_name('元素的標(biāo)簽名')

????????????????注意:使用標(biāo)簽名定位元素,須保證本頁面只有一個該類型的標(biāo)簽,或者要定位的元素是本頁面第一個該類型的標(biāo)簽。

(5)link_text定位:

????????driver.find_element_by_link_text('超鏈接元素的文本值')

? ? ? ? ? ? ? ? 注意:使用link_text定位超鏈接元素(即<a>標(biāo)簽或<p>標(biāo)簽),需要匹配超鏈接文本的全部內(nèi)容。同樣,需要保證超鏈接文本的唯一性。

(6)partail_link_text定位:

????????driver.find_element_by_partial_link_text('超鏈接元素的文本內(nèi)容')

? ? ? ? ? ? ? ? 注意:partial_link_text也可以定位超鏈接元素,需要匹配的是超鏈接文本的部分內(nèi)容,要保證匹配的內(nèi)容在頁面具有唯一性。

代碼示例:

# 導(dǎo)包
from time import sleepfrom selenium import webdriver# 實例化瀏覽器對象
driver = webdriver.Chrome()
# 打開瀏覽器
driver.get('https://www.baidu.com')
# 展示效果
sleep(1)
# 瀏覽器窗口最大化
driver.maximize_window()
# 隱式等待
driver.implicitly_wait(10)
sleep(2)
# 使用id定位百度首頁搜索框,并輸入搜索內(nèi)容Auto_test
driver.find_element_by_id("kw").send_keys('Auto_test')
sleep(1)# 清除以上輸入內(nèi)容,方便再次輸入
driver.find_element_by_id("kw").clear()
# 使用name定位百度首頁搜索框,輸入find_name
driver.find_element_by_name('wd').send_keys('find_name')
sleep(1)# 使用class定位百度首頁搜索按鈕,并點擊
driver.find_element_by_class_name('s_btn').click()
sleep(1)# 以上操作已經(jīng)進入搜索結(jié)果頁了,回退到百度首頁方便后續(xù)動作
driver.back()
sleep(1)
# 使用tag_name定位百度首頁設(shè)置按鈕,并獲取它的文本信息
span = driver.find_element_by_tag_name('span')  # 因為已經(jīng)確認過設(shè)置是首頁的第一個span標(biāo)簽,所以可以使用標(biāo)簽名定位
print('獲取的span標(biāo)簽的文本內(nèi)容為:', span.text)# 使用link_text定位百度首頁的新聞超鏈接,并獲取它的文本信息
news_link = driver.find_element_by_link_text('新聞')
print('新聞鏈接的文本內(nèi)容是:',news_link.text)# 使用partial_link_text定位百度首頁網(wǎng)盤超鏈接,并獲取它的文本信息
link1 = driver.find_element_by_partial_link_text('網(wǎng)')
print('網(wǎng)盤超鏈接的文本內(nèi)容是:',link1.text)
sleep(2)
# 關(guān)閉瀏覽器
driver.quit()

(7)使用XPath定位:

? ? ? ? 使用XPath定位元素可以分為以下幾種:

? ? ? ? ①絕對路徑:從/html開始逐級查找元素

????????/html/body/div[2]/div[1]/div[5]/div/div/form/span[1]/input

? ? ? ? ? ? ? ? /html是頁面最外層,可以理解為樹形結(jié)構(gòu)的根。/body表示/html內(nèi)的body路徑。div[2]表示/html/body路徑下的第二個div。依此類推。

? ? ? ? ②相對路徑:從能夠唯一定位的一個元素開始,相對這個元素查找元素

????????//input[@id="kw"]

? ? ? ? ? ? ? ? 該元素本身就可以直接定位到,所以相對路徑就是ta自己

? ? ? ? ③利用元素屬性://標(biāo)簽名[@屬性名="屬性值"]

????????????????//input[@id="kw"]

? ? ? ? ? ? ? ? 意思是,匹配id值為kw的input標(biāo)簽

????????//*[@id="kw"]

? ? ? ? ? ? ? ? 使用通配符*,意思是,匹配id值為kw的所有標(biāo)簽

? ? ? ? ? ? ? ? 注意:

????????????????????????此處如果使用class定位,如果class有多個值,則需要填寫class的全部值

? ? ? ? ? ? ? ? ? ? ? ? 屬性前必須要有@前綴修飾

? ? ? ? ④利用屬性與邏輯結(jié)合://標(biāo)簽名[@屬性名1="屬性值1" and @屬性名2="屬性值2"]

? ? ? ? ? ? ? ? 利用邏輯運算符:and or not,對多個屬性條件進行邏輯運算作為判斷條件,查找元素。

? ? ? ? ? ? ? ? 解決了元素屬性值相同問題。

????????????????(舉個實例理解:到一個地方找某人,他叫張三。但是這個地方有很多個叫張三的人,不知道你到底找哪一個。再加上他是一個啞巴這個特征,就可以找到你想找的張三了。如果這個地方剛好有兩個叫張三的啞巴,那再加上他有六根手指頭這個特點……依此類推直到找到張三)

? ? ? ? ⑤利用屬性與層級結(jié)合:

? ? ? ? ? ? ? ? 如果無法直接定位一個元素,但是可以定位到它的父級或祖級元素,則可以利用屬性定位到它的父級或祖級元素,再通過它與父祖級元素的相對路徑關(guān)系來定位該元素。

? ? ? ? ? ? ? ? (舉個實例理解:你想找一個人,不知道他叫什么,也不知道他的任何信息,但是你知道他爸爸或者他爺爺或者他家某一代祖先是誰(父類或祖類),并且他家有家譜(路徑)。那么你就可以說,我找某某某的兒子/孫子/第幾代孫子甚至可以明確指定,找這個人的第幾個兒子/第幾個孫子。參考絕對路徑的解析方法理解一下)

? ? ? ? ⑥擴展:

? ? ? ? //*[text()="XXX"]? ? ? ? 元素文本內(nèi)容等于XXX的

? ? ? ? //*[centains(@屬性名,"XXX")]? ? ? ? 元素屬性包含XXX的

? ? ? ? //*[starts_with(@屬性名,"XXX")]? ? ? ? 元素屬性以XXX開頭的

代碼示例:

# 導(dǎo)包
from time import sleepfrom selenium import webdriver# 實例化瀏覽器對象
driver = webdriver.Chrome()
# 打開瀏覽器
driver.get('https://www.baidu.com')
# 展示效果
sleep(1)
# 瀏覽器窗口最大化
driver.maximize_window()
# 隱式等待
driver.implicitly_wait(10)
sleep(2)# 使用絕對路徑查找百度首頁搜索框,并輸入搜索內(nèi)容
element1 = driver.find_element_by_xpath('/html/body/div[2]/div[1]/div[5]/div/div/form/span[1]/input')
element1.send_keys('000')
sleep(1)# 使用相對路徑查找百度首頁搜索框,并輸入內(nèi)容
element1.clear()
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('111')
sleep(1)# 使用屬性查找百度首頁搜索框,并輸入內(nèi)容
element1.clear()
driver.find_element_by_xpath('//*[@class="s_ipt"]').send_keys('222')
# 為了和上一步的相對路徑區(qū)分開,我使用了class屬性定位,只要能保證唯一性,用那個屬性都可以
sleep(1)# 使用屬性與邏輯結(jié)合查找百度搜索框
element1.clear()
driver.find_element_by_xpath('//*[@class="s_ipt" and @id="kw"]').send_keys('333')
sleep(1)# 使用屬性與層級結(jié)合查找百度搜索按鈕并點擊
driver.find_element_by_xpath('//*[@id="s_btn_wr"]/input').click()
sleep(1)# //*[text()='XXX']     文本內(nèi)容等于XXX的元素
driver.find_element_by_xpath('//*[text()="百度首頁"]').click()      # 從搜索頁返回百度首頁
sleep(2)
# //*[contains(@屬性名,'XXX')]       屬性值中含有XXX的元素,前后缺省都可以
driver.find_element_by_xpath('//*[contains(@class,"ot-refresh")]').click()     # 熱搜換一換
sleep(2)
# //*[starts-with(@屬性名,'XXX')]     屬性值以XXX開頭的元素
driver.find_element_by_xpath('//*[starts-with(@class,"hot-refresh")]').click()         # 熱搜換一換
sleep(2)
# 祖輩和后代: //element祖//element后代     ://表示任意層級
driver.find_element_by_xpath('//*[@id="form"]//*[@name="wd"]').send_keys('000')# 關(guān)閉瀏覽器
driver.quit()

(8)CSS定位:

? ? ? ?selenium框架推薦使用CSS定位,這種定位方法效率更高,功能更強大。?使用CSS定位可以分為以下幾種:

? ? ? ? ①使用元素id定位

????????find_element_by_css_selector('#id值')

? ? ? ? ②使用元素class定位

????????????????find_element_by_css_selector('.class屬性值')

? ? ? ? ? ? ? ? 注意:如果class有多個值,需要選擇具有唯一性的一個

? ? ? ? ③使用元素標(biāo)簽名定位

????????????????find_element_by_css_selector('標(biāo)簽名')

? ? ? ? ? ? ? ? 注意:確保該元素是頁面唯一的該類型標(biāo)簽時可以用標(biāo)簽名定位

? ? ? ? ④使用元素屬性定位

????????????????find_element_by_css_selector('[屬性名 ="屬性值"]')

? ? ? ? ⑤使用元素屬性與層級結(jié)合定位(原理與Xpath層級定位相似)

? ? ? ? ? ? ? ? 元素A>元素B:AB為父子關(guān)系

? ? ? ? ? ? ? ? 元素A? 元素B:AB為祖孫關(guān)系

? ? ? ? ⑥擴展:

? ? ? ? ? ? ? ? 標(biāo)簽名[屬性名^="XXX"]? ? ? ? 屬性以XXX開頭

? ? ? ? ? ? ? ? 標(biāo)簽名[屬性名$="XXX"]? ? ? ? 屬性以XXX結(jié)尾

? ? ? ? ? ? ? ? 標(biāo)簽名[屬性名*="XXX"]? ? ? ? 屬性包含XXX

? ? ?代碼示例:? ? ? ? ?

# 導(dǎo)包
from time import sleepfrom selenium import webdriver# 實例化瀏覽器對象
driver = webdriver.Chrome()
# 打開瀏覽器
driver.get('https://www.baidu.com')
# 展示效果
sleep(1)
# 瀏覽器窗口最大化
driver.maximize_window()
# 隱式等待
driver.implicitly_wait(10)
sleep(2)
# 使用id查找百度首頁搜索框,并輸入內(nèi)容
driver.find_element_by_css_selector('#kw').send_keys('測試')
sleep(1)# 使用class查找百度搜索“百度一下”按鈕,并點擊
driver.find_element_by_css_selector('.s_btn').click()
sleep(2)# 使用屬性定位,查找搜索結(jié)果頁的搜索框,清空
driver.find_element_by_css_selector('[id="kw"]').clear()
sleep(1)# 使用屬性與層級結(jié)合,查找搜索結(jié)果頁的搜索框,輸入報告
driver.find_element_by_css_selector('#form > span.bg.s_ipt_wr.new-pmd.quickdelete-wrap>input').send_keys('報告')
sleep(2)# 使用擴展方法查找搜索按鈕并點擊
driver.find_element_by_css_selector('input[type^="sub"]').click()
sleep(2)# 關(guān)閉瀏覽器
driver.quit()

? (9)定位一組元素:

????????????????find_elements_by_XXX()

? ? ? ? ? ? ? ? 查找符合要求的一組元素,返回結(jié)果為元素對象組成的列表,想要調(diào)用其中某一個,可以使用列表下標(biāo)

? 代碼示例

# 導(dǎo)包
from time import sleepfrom selenium import webdriver
# 實例化瀏覽器對象
driver = webdriver.Chrome()
# 打開瀏覽器
driver.get('https://kxl.jushispoc.com/#/phonelogin')
# 展示效果
sleep(1)
# find_elements返回的是一個列表,列表的內(nèi)容是多個元素對象.
# find_element返回的是一個元素對象.
elements_list = driver.find_elements_by_class_name('el-input__inner')
# 需求1:將頁面找到的所有輸入框輸入Test
for i in elements_list:i.send_keys('test')
sleep(3)
# 需求2:將找到的第2個輸入框輸入Test666
elements_list[1].send_keys('Test666')
sleep(10)
# 關(guān)閉瀏覽器
driver.quit()

(10)定位元素的更底層寫法

? ? ? ? ? ? ? 導(dǎo)入By類:? find_element(By.查找方法,查找參數(shù))?

? ? ? ? ? ? ? ? 更適用于PO模式封裝時使用,將查找方法與查找參數(shù)封裝在一起,簡化代碼結(jié)構(gòu),當(dāng)前階段了解這種寫法就可以。? ? ?

driver.find_element(By.ID, 'kw').send_keys('333')

? ? ??

? ? ? ??

????????

http://www.risenshineclean.com/news/55512.html

相關(guān)文章:

  • WordPress網(wǎng)站hym地圖百度一下電腦版首頁網(wǎng)址
  • 靜態(tài)網(wǎng)站作品seo怎樣優(yōu)化網(wǎng)站
  • 簡約中國風(fēng)免費ppt模板seo網(wǎng)站編輯優(yōu)化招聘
  • 建設(shè)網(wǎng)站不顯示添加白名單全網(wǎng)營銷系統(tǒng)
  • 鐵道部網(wǎng)上訂票網(wǎng)站素材百度識圖掃一掃
  • wordpress相冊插件中文海外aso優(yōu)化
  • 自己如何網(wǎng)站建設(shè)seo查詢百科
  • 工商聯(lián)網(wǎng)站建設(shè)作用湖州seo排名
  • 先搭建網(wǎng)站還是先做ui怎么創(chuàng)建網(wǎng)站教程
  • 化妝培訓(xùn)網(wǎng)站模板百度網(wǎng)頁網(wǎng)址
  • 網(wǎng)站開發(fā)費用多少錢如何學(xué)會推廣和營銷
  • 做的比較好的返利網(wǎng)站知乎網(wǎng)站搭建一般要多少錢
  • 做盜版視頻網(wǎng)站違法嗎自己制作網(wǎng)頁的網(wǎng)站
  • 電子商務(wù)網(wǎng)站建設(shè)專業(yè)主修課程關(guān)鍵詞挖掘排名
  • wordpress 頁面?zhèn)戊o態(tài)界首網(wǎng)站優(yōu)化公司
  • 企業(yè)網(wǎng)站建設(shè)電話網(wǎng)絡(luò)推廣方案七步法
  • 廣東工廠網(wǎng)站建設(shè)sem是什么公司
  • 渭南網(wǎng)站建設(shè)網(wǎng)站代發(fā)外鏈
  • 做設(shè)計想接外單去哪個網(wǎng)站好怎樣推廣自己的商城
  • 東西湖做網(wǎng)站中國最厲害的營銷策劃公司
  • 企業(yè)如何注冊自己的網(wǎng)站網(wǎng)站分析
  • 最簡單的網(wǎng)站模板下載資深seo顧問
  • html5企業(yè)網(wǎng)站建設(shè)湖南營銷型網(wǎng)站建設(shè)
  • 網(wǎng)站域名被做網(wǎng)站的公司擅自更改寧波優(yōu)化網(wǎng)站哪家好
  • 營銷型網(wǎng)站建設(shè)極速建站佛山疫情最新消息
  • 做我網(wǎng)站個人網(wǎng)站怎么制作
  • 建設(shè)一個廣告聯(lián)盟的網(wǎng)站上海城市分站seo
  • 網(wǎng)站建設(shè)如何提高瀏覽量廣州30萬人感染
  • 在線推廣企業(yè)網(wǎng)站的方法廣東今日最新疫情通報
  • wordpress 連接qq視頻教程seo是什么意思電商