Selenium實現微博自動化運營之關注、點贊、評論功能_其它綜合

來源:腳本之家  責任編輯:小易  

這是一個測試的話題,同樣也是一個開發的話題。現在的web應用免不了需要進行自動化的頁面測試,那么selenium是一個不錯的選擇。selenium是一個自動化測試框架,它擁有IDE和API接口,可以應用于Java,C#.Python,Ruby等語言。用selenium來構建一個自動化的測試程序非常的簡單。不過首先你需要熟悉web應用里面的request,response概念,以及XPath的用法。這里我將介紹一下如何利用Junit與selenium來實現自動化頁面測試。1.下載必要依賴文件selenium-server-standalone-2.25.0.jar,junit-4.7.jar,并將它們放置到工程的lib文件夾下面(我這里使用Firefox瀏覽器來作為客戶端,所以就不需要下載額外的瀏覽器執行器。2.建立一個測試工程,在工程里創建一個測試文件,并添加如下代碼:importcom.thoughtworks.selenium.Selenium;import junit.framework.TestCase;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.junit.runners.BlockJUnit4ClassRunner;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebDriverBackedSelenium;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.internal.WrapsDriver;import org.openqa.selenium.support.ui.Wait;import org.openqa.selenium.support.ui.WebDriverWait;import java.io.IOException;import static org.openqa.selenium.support.ui.ExpectedConditions.visibilityOfElementLocated;RunWith(BlockJUnit4ClassRunner.class)public class pickTest extends TestCase {protected static Selenium selenium;private static WebDriver driver;Beforepublic void createAndStartService()throws IOException {selenium=new WebDriverBackedSelenium(new FirefoxDriver(),"");driver=((WrapsDriver)selenium).getWrappedDriver();}Afterpublic void createAndStopService(){driver.quit();}Testpublic void should_open_google_page()throws InterruptedException {driver.get("htt p:/ww w.g oog le.c om.hk");WebElement searchBox=driver.findElement(By.xpath("/*[@id=\\"lst-ib\\"]"));searchBox.sendKeys("selenium");WebElement searchButton=driver.findElement(By.xpath("/*[@id=\\"tsf\\"]/div[2]/div[3]/center/input[1]"));searchButton.click();Wait<WebDriver>wait=new WebDriverWait(driver,30);wait.until(visibilityOfElementLocated(By.xpath("/*[@id=\\"ab_name\\"]/span")));}}3.運行這個測試,你將看到firebox瀏覽器被自動啟動,然后會自動的輸入selenum并搜索。這樣,一個簡單的自動化頁面測試就完成了。有的朋友可能不太明白這段代碼的含義。上面的代碼中我標出了紅色和藍色兩部分,我簡單解釋一下。Selenium是通過對瀏覽器的包裝來進行頁面處理的,因此我們首先會創建一個與瀏覽器相關的WebDriver對象。然后我們需要查找頁面元素就是通過findeElement的方法和XPath的方式來獲取頁面對象(紅色部分代碼)。那么通常我們的一個點擊操作產生服務器相應,這里就需要一些時間。藍色部分的代碼就是創建一個等待對象,你可以通過XPath的方式來確定返回后頁面上的哪個元素加載完了就認為頁面加載完了,同時等待對象也有一個超時設置,這樣即是服務器端一直不返回或出錯。我們依然可以結束測試www.13333515.buzz防采集請勿采集本網。

Selenium 是什么?

您好,希望以下回答能幫助您 這個問題我目前也在考慮,影響因素有很多。目前有個最通用的思路就是,獲取頁面上所有元素屬性包含\"href\"的元素,可以用getAttribute(“href”)方法,然后做個循環依次點擊。

Selenium是一個用于Web應用程序測試的工具,可以模擬真正的用戶操作,支持多種瀏覽器,如Firefox,Safari,Google Chrome,Opera等。

Hello,你這個問題解決了嗎?我也出現了這種情況,如果你解決了,可否告知一下解決方案,謝謝!

Selenium 模擬的就是一個真實的用戶的操作行為,我們完全不用擔心 cookie 追蹤和隱藏字段的干擾。

static void Main(string[]args) { 實例化Selenium1對象 ISelenium selenium=new DefaultSelenium(\"localhost\",4444,\"*firefox\",http://www.360buy.com);selenium.Start();打開京東登錄頁面

除了Selenium 外,還有Puppeteer 工具可以模擬用戶操作,Python + Selenium + 第三方瀏覽器可以讓我們處理多種復雜場景,包括網頁動態加載、JS 響應、Post 表單等。

selenium是一個自動化測試框架,它擁有IDE和API接口,可以應用于Java,C#.Python,Ruby等語言。用selenium來構建一個自動化的測試程序非常的簡單。不過首先你需要熟悉web應用里面的request,

正好,我們公司有一個妹紙團隊運營的微博粉絲挺多,叫中公題庫君,我們使用Selenium實現微博自動關注她,順便點贊和評論一下

現在的測試工具都屏蔽呈現過程,只是模擬多用戶并發請求,計算用戶得到響應的時間,頁不會將服務器的每個響應都向客戶端呈現。對于數據傳輸的問題,這也是我要強調的性能測試要在局域網中進行,在局域網中

相關幫助鏈接 官網地址 查找元素 等待指定狀態 所有動作 action瀏覽器api

一、核心代碼

talking is cheap,話不多說,上代碼!

from selenium import webdriverimport time# 注意這里使用了我本機的谷歌瀏覽器驅動browser = webdriver.Chrome(executable_path='/Users/chenqionghe/.wdm/drivers/chromedriver/79.0.3945.36/mac64/chromedriver')# 設置用戶名、密碼username = "你的用戶名"password = "你的密碼"# 打開微博登錄頁browser.get('https://passport.weibo.cn/signin/login')browser.implicitly_wait(5)time.sleep(1)# 填寫登錄信息:用戶名、密碼browser.find_element_by_id("loginName").send_keys(username)browser.find_element_by_id("loginPassword").send_keys(password)time.sleep(1)# 點擊登錄browser.find_element_by_id("loginAction").click()time.sleep(1)# 通過人機驗證,找到那個小點點擊一下browser.find_element_by_class_name("geetest_radar_tip").click()# 打開我們的中公題庫君的首頁browser.get('https://m.weibo.cn/u/5430882137')# 加關注follow_button = browser.find_element_by_xpath('//div[@class="m-add-box m-followBtn"]')follow_button.click()time.sleep(1)# 這時候彈出了選擇分組的框,定位取消按鈕group_button = browser.find_element_by_xpath('//a[@class="m-btn m-btn-white m-btn-text-black"]')group_button.click()time.sleep(1)# 這時候我們就關注成功了,好,接下來,我們給題庫君點贊和評論一下# 找到第二條微博,因為第一條微博都是置頂的second_weibo=browser.find_element_by_xpath("http://div[@class='card m-panel card9 weibo-member card-vip'][2]")second_weibo.textjs = "arguments[0].scrollIntoView();" # 將下拉滑動條滑動到當前div區域browser.execute_script(js, second_weibo) # 給第二條微博點贊selector="http://div[@class='card m-panel card9 weibo-member card-vip'][2]//footer/div[@class='m-diy-btn m-box-col m-box-center m-box-center-a'][3]"a=browser.find_element_by_xpath(selector)a.click()# 定位第二條微博的評論處,點擊selector="http://div[@class='card m-panel card9 weibo-member card-vip'][2]//footer/div[@class='m-diy-btn m-box-col m-box-center m-box-center-a'][2]"a=browser.find_element_by_xpath(selector)text=a.texta.click()# 輸出評論內容wishes="I'm super saiyan, best wishes to you !"if text=='評論': # 光標定位到發表評論處 comment=browser.find_element_by_tag_name('textarea') comment.click() # 輸入評論內容 comment.send_keys(wishes) time.sleep(1) # 定位發送按鈕 sendBtn=browser.find_element_by_class_name('m-send-btn')else: # 光標定位到發表評論處 focus=browser.find_element_by_css_selector('span[class="m-box-center-a main-text m-text-cut focus"]') focus.click() # 點擊評論 comment=browser.find_element_by_tag_name('textarea') comment.click() # 輸入評論內容 comment.send_keys(wishes) # 定位發送按鈕 sendBtn=browser.find_element_by_class_name('btn-send')# 發表評論sendBtn.click()

二、步驟分解

1.打開瀏覽器

from selenium import webdriverimport time# 注意這里使用了我本機的谷歌瀏覽器驅動browser = webdriver.Chrome(executable_path='/Users/chenqionghe/.wdm/drivers/chromedriver/79.0.3945.36/mac64/chromedriver')

2.訪問微博登錄頁

# 打開微博登錄頁browser.get('https://passport.weibo.cn/signin/login')browser.implicitly_wait(5)

可以看到,已經打開了頁面

3.輸入賬號密碼

# 填寫登錄信息:用戶名、密碼username = "你的用戶名"password = "你的密碼"browser.find_element_by_id("loginName").send_keys(username)browser.find_element_by_id("loginPassword").send_keys(password)time.sleep(1)

4.點擊登錄

# 點擊登錄browser.find_element_by_id("loginAction").click()

5.通過人機驗證

找到那個小點點擊一下

browser.find_element_by_class_name("geetest_radar_tip").click()

登錄成功,如下所示

6.訪問我們的中公題庫君首頁

browser.get('https://m.weibo.cn/u/5430882137')

7.加一下關注

#加關注follow_button = browser.find_element_by_xpath('//div[@class="m-add-box m-followBtn"]')follow_button.click()time.sleep(1)# 這時候彈出了選擇分組的框,定位取消按鈕group_button = browser.find_element_by_xpath('//a[@class="m-btn m-btn-white m-btn-text-black"]')group_button.click()

關注成功后,讓選擇分組,這里我直接找到取消按鈕點擊了一下

這時候我們就關注成功了,好,接下來,我們找到題庫君非置頂的第一條微博評論一下

8.定位到第2條微博

因為第1條一般是置頂的,定位到第2條微博頁面處

# 找到第二條微博,因為第一條微博都是置頂的second_weibo=browser.find_element_by_xpath("http://div[@class='card m-panel card9 weibo-member card-vip'][2]")second_weibo.textjs = "arguments[0].scrollIntoView();" # 將下拉滑動條滑動到當前div區域browser.execute_script(js, second_weibo)

9.開始點贊

# 給第二條微博點贊selector="http://div[@class='card m-panel card9 weibo-member card-vip'][2]//footer/div[@class='m-diy-btn m-box-col m-box-center m-box-center-a'][2]"a=browser.find_element_by_xpath(selector)a.click()

可以看到,點贊成功了

10.點擊評論

#定位第二條微博的評論處selector="http://div[@class='card m-panel card9 weibo-member card-vip'][2]//footer/div[@class='m-diy-btn m-box-col m-box-center m-box-center-a'][2]"a=browser.find_element_by_xpath(selector)text=a.texta.click()

這里的邏輯是,點擊了,如果還沒有人評論,評論框顯示的文字叫<評論>,如果已經有人評論了會顯示評論數量

# 輸入評論內容wishes="I'm super saiyan, best wishes to you !"if text=='評論': # 光標定位到發表評論處 comment=browser.find_element_by_tag_name('textarea') comment.click() # 輸入評論內容 comment.send_keys(wishes) time.sleep(1) # 定位發送按鈕 sendBtn=browser.find_element_by_class_name('m-send-btn')else: # 光標定位到發表評論處 focus=browser.find_element_by_css_selector('span[class="m-box-center-a main-text m-text-cut focus"]') focus.click() # 點擊評論 comment=browser.find_element_by_tag_name('textarea') comment.click() # 輸入評論內容 comment.send_keys(wishes) # 定位發送按鈕 sendBtn=browser.find_element_by_class_name('btn-send') # 發表評論sendBtn.click()

哈哈,看到已經評論成功了,到此,通過Selenium實現了微博自動化:關注、點贊、評論,感覺還挺好玩的~

總結

以上所述是小編給大家介紹的Selenium實現微博自動化運營之關注、點贊、評論功能,希望對大家有所幫助!

作為一個之前沒接觸過selenium的新手來說,如果之前有過寫代碼的經驗,那么學習起來就會更加快速!但無論如何,開始總是比較難的!我也是從一個接近純24K小白成長起來的,一步一個腳印,在這個過程中我學習到了很多新的知識,有了新的突破,新的成長,不斷地努力,不斷地嘗試,不斷地總結經驗,讓我一直走到了今天,未來,還有很多路要走!義無反顧,我的測試之路!所以,今天抽空回顧一下我的selenium學習過程,也就是,selenium自動化測試怎么開始,這些,是我的個人經驗,分享出來給大家參考!一開始,基本上很多人都是用selenium IDE錄制腳本開始的,我也是!有一本書寫得很不錯:selenium初學者指南!So,從錄制回放開始我的selenium,而在這個過程中,不斷地去補充我的html css知識,熟悉selenium的api!慢慢地,發現錄制的腳本在回放的時候經常報錯,通過檢查發現,是定位上的錯誤,導致這種定位的錯誤的最大原因是系統前端采用了某種框架,如tigerUI,exj.所以HTML里面的標簽很多都是動態的,比如id,class,name!這對selenium操作定位的元素而進行自動化來說是致命傷!所以,開始自己寫定位信息,這已經是必須的了!從而學習了xpth和css選擇器,掌握了更加有效,快速和穩定地定位頁面上的元素(定位的時候難免會碰到有iframe,這就得先切換到iframe中再進行定位了)!也就是,在selenium IDE上寫腳本!信心滿滿地在selenium IDE上寫了長長地一段腳本,并且反復跑都能成功!總算嘗到了一點點幸福的滋味!然后呢,問題來了,當我要修改和擴展這段的腳本的時候,才發現這效率是相當地低!一句句查!一句句改!多么痛的領悟!另外,selenium IDE 默認啟動的是火狐,在使用selenium RC 啟動 IE 進行跑腳本時瀏覽器總是會報錯!各種搞不定,各種不淡定!決定放棄使用IDE!selenium有一個強大之處就是支持多種語方:java,C#,python等等,并且可以把錄制的腳本轉換成代碼!我用的是java,果斷走起!不用說,當然是把腳本轉為java代碼了,在Eclipse中重新開始搞!選擇一個測試框架:有Junit和TestNg兩個選擇,公司用的是junit,所以,不用多說,我就用junit驗證selenium腳本的運行結果!并且,Junit和TestNG都可以生成比較直觀的測試報告!寫好一些代碼,會看到整段代碼中密密麻麻充斥著基本相同的代碼:開始封裝代碼!把常用到API封裝起來!封裝好之后代碼看著就舒服多了!接下來,是不是也應該把代碼中的定位信息用一個專門的文件放起來,再去讀取里面的定位信息,這樣,維護代碼和維護定位信息就放在了兩個地方,不用老是扎在代碼和定位路徑中,簡單地分一下層!果斷嘗試!到這里,腳本寫出來了,常用的api封裝起來了,定位路徑分離出來了!整個代碼簡潔多了!寫起來容易和舒服多了!這時候,該個性化定制一下自己的框架了,這里,就暫時不寫下去了,已經離怎樣開始selenium挺遠的了!或許,到了這一步,你早就有自己對測試框架的想法和對腳本的設計方法了。加油吧,把想法化為實際的動力,繼續向前!內容來自www.13333515.buzz請勿采集。


  • 本文相關:
  • 使用selenium破解新浪微博的四宮格驗證碼
  • python selenium抓取微博內容的示例代碼
  • python selenium實現微博自動登錄的示例代碼
  • 微信 小程序前端源碼詳解及實例分析
  • webpack基礎教程之名詞解釋
  • 99%的程序員都會收藏的書單 你讀過幾本?
  • antd通過 filterdropdown 自定義按某天時間搜索功能
  • 網站統計中的數據收集原理及實現
  • 微信小程序(微信應用號)開發工具0.9版安裝詳細教程
  • github代碼常用指令(小結)
  • 2019-ncov 全國新型肺炎疫情每日動態趨勢可視圖
  • asp.net php asp jsp 301重定向的代碼(集合)
  • web jmeter–接口測試工具詳解
  • 怎樣開始用selenium進行自動化測試
  • selenium 怎么實現在ios下自動化
  • selenium自動化測試都是怎么抽取,規劃用例的啊
  • selenium支持桌面應用的自動化測試嗎
  • 如何利用selenium來進行自動化頁面測試
  • selenium跑自動化用例跑通了,然后出現報錯
  • 如何安裝自動化測試工具selenium
  • 如何利用selenium來進行自動化頁面測試
  • 怎樣開始用selenium進行自動化測試
  • selenium 可以做網頁游戲的自動化測試嗎
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全javascriptasp.netphp編程ajax相關正則表達式asp編程jsp編程編程10000問css/htmlflex腳本加解密web2.0xml/rss網頁編輯器相關技巧安全相關網頁播放器其它綜合dart首頁其它綜合使用selenium破解新浪微博的四宮格驗證碼python selenium抓取微博內容的示例代碼python selenium實現微博自動登錄的示例代碼微信 小程序前端源碼詳解及實例分析webpack基礎教程之名詞解釋99%的程序員都會收藏的書單 你讀過幾本?antd通過 filterdropdown 自定義按某天時間搜索功能網站統計中的數據收集原理及實現微信小程序(微信應用號)開發工具0.9版安裝詳細教程github代碼常用指令(小結)2019-ncov 全國新型肺炎疫情每日動態趨勢可視圖asp.net php asp jsp 301重定向的代碼(集合)web jmeter–接口測試工具詳解刪除svn三種方法delsvn(windows+最新idea2020注冊碼永久激活(激活c/s和b/s兩種架構的概念、區別和網址(url)支持的最大長度是多少5個linux平臺程序員最愛的開發工url中斜杠/和反斜杠\的區別小結支付寶 接口開發幫助(asp,php,as提示“處理url時服務器出錯”和“整理的比較全的一句話后門代碼(方256種編程語言大匯總計算機科學中32個常用的基礎算法各種語言、服務器301跳轉代碼全集刪除svn三種方法delsvn(windows+linux)科學知識:理解socketatom-ide 的使用方法簡單介紹微信小程序應用號開發體驗微信小程序(應用號)組件詳細介紹flask+layui+echarts實現前端動態圖展示數trie樹_字典樹(字符串排序)簡介及實現
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.13333515.buzz All Rights Reserved
    3排列五开奖结果