手機(jī)瀏覽器自動化及桌面瀏覽器模擬手機(jī)自動化

如果有應(yīng)用在手機(jī) app 上面,我們直接自動化手機(jī)里面瀏覽器。要怎么做?就是說在手機(jī)里面的瀏覽器打開一個 web 頁面進(jìn)行測試。它是有個方法的,我們看下面的代碼。

# coding=utf8
from appium import webdriver
import time
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
import traceback
 
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '7'
desired_caps['deviceName'] = 'test'
desired_caps['browserName'] = 'Chrome'
desired_caps['newCommandTimeout'] = 6000
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) #啟動Remote RPC

driver.implicitly_wait(10)
try:

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

    driver.find_element_by_id('index-kw').send_keys('宋曲')

    driver.find_element_by_id('index-bn').click()

except:
    print(traceback.format_exc())

input('**** Press to quit..')
driver.quit()

我們接下來講的是如何在手機(jī)里面打開一個瀏覽器,去自動化手機(jī)里面的瀏覽器,這里面的瀏覽器我們選擇谷歌,已谷歌為例。如果你的手機(jī)里面沒有谷歌瀏覽器你就安裝一個不然就會提示找不到應(yīng)用。下面就是聲明瀏覽器名稱就是 Chrome

desired_caps['browserName'] = 'Chrome'

大家看配置項并沒有寫包名,大家注意如果你這里面寫的是 Chrome,它會自動去生成一個包名和一個 Activity 。下面的代碼就和 Selenium 一樣了。大家會不會疑惑,這個瀏覽器不是原生應(yīng)用嗎,為什么我們這里不需要切換 Webview ?

啟動瀏覽器之后這個 appium 自動已 selenium 模式來對瀏覽器做驅(qū)動。大家把手機(jī)想象成一臺計算機(jī),就像你在計算機(jī)里面去做操作,計算機(jī)打開瀏覽器之后它把 driver.get 打開一個網(wǎng)頁,打開網(wǎng)頁之后就開始去找元素然后操作元素,就是這樣一個過程。


運(yùn)行代碼,發(fā)現(xiàn)報錯了,報錯信息如下:

image.png

設(shè)備上的 Chrome 版本是:Chrome/74.0.3729.136chromedriver 的版本是2.45.615291,版本不匹配。我們把 ChromeDriver 換一下就可以了,怎么換 ChromeDriver 我們在這里在講一遍??磮D

image.png
image.png

如果我們不在手機(jī)上做自動化,在電腦上做自動化行不行?前面的章節(jié)中有講到,電腦中的瀏覽器通過手機(jī)模式去打開網(wǎng)頁,我們前面 selenium 的時候,沒有提到怎么用手機(jī)模式去打開網(wǎng)頁。大家想一下怎么通過手機(jī)模式打開桌面上的瀏覽器?模擬手機(jī)自動化。我們看這部分代碼

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()

# 選擇一種存在的模擬手機(jī)設(shè)備類型
chrome_options.add_experimental_option(
    "mobileEmulation",
    {"deviceName": "Pixel 2"}) #代表設(shè)備的名稱是Pixel 2

driver = webdriver.Chrome(
    desired_capabilities = chrome_options.to_capabilities()
)

driver.implicitly_wait(10)

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

element_keyword = driver.find_element_by_id("index-kw")

# 輸入字符
element_keyword.click()
element_keyword.send_keys('宋曲\n')

input('press to continue...')
driver.quit()

大家先看第一行,看到這里是不是很熟悉 from selenium import webdriver 。第二行大家可能覺得有點(diǎn)陌生,這里是什么意思呢,我們可以點(diǎn)進(jìn)去先看一下。這里的 Options 相當(dāng)于一個配置類,在這個配置里面它屬于 chromeOptions

image.png

它是屬于谷歌的配置類,因?yàn)榭赡苊恳粋€瀏覽器它的配置項還不一樣。這個配置類更貼合瀏覽器本身。

這里要注意一下:

driver = webdriver.Chrome(
    desired_capabilities = chrome_options.to_capabilities()
)

這里我們沒有寫 chromedriver 路徑,可以寫也可以不寫,如果不寫的話需要把 chromedriver 放到環(huán)境變量里面。


添加自定義機(jī)型,點(diǎn)擊

image.png

我運(yùn)行上述代碼的術(shù)后還遇到了一個小坑,如果運(yùn)行代碼報錯 'chromedriver' executable needs to be in PATH問題,用如下方法解決:

1.chromedriver.exe 拷貝至谷歌瀏覽器目錄(如 C:\Program Files\Google\Chrome\Application) 以及 python 根目錄 **。

  • python 根目錄查看方法如下圖
image.png

2. 將谷歌瀏覽器環(huán)境變量添加到
path (C:\Users\HD003\AppData\Local\Google\Chrome\Application)。
至此,就可以解決 chromedriver executable needs to be in PATH 問題了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容