最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

干貨 | JavaScript腳本注入,完成Selenium 無(wú)法做到的那些事

2022-10-17 11:23 作者:愛(ài)測(cè)軟件測(cè)試  | 我要投稿

當(dāng) webdriver 遇到無(wú)法完成的操作時(shí),可以使用 JavaScript 來(lái)完成,webdriver 提供了 execute_script() 方法來(lái)調(diào)用 js 代碼。 執(zhí)行 js 有兩種場(chǎng)景:

  • 在頁(yè)面上直接執(zhí)行 js

  • 在某個(gè)已經(jīng)定位的元素上執(zhí)行 js

JavaScript 是一種腳本語(yǔ)言,有的場(chǎng)景需要使用 js 腳本注入輔助我們完成 Selenium 無(wú)法做到的事情。

Selenium 可以通過(guò) execute_script() 來(lái)執(zhí)行 JavaScript 腳本。

  • driver.execute_script:同步執(zhí)行 JavaScript 在當(dāng)前的窗口框架下

  • js 腳本可以在瀏覽器的開(kāi)發(fā)者工具 → Console 中進(jìn)行調(diào)試

  • 獲取元素控件中的屬性值

  • 與 Selenium 結(jié)合,在代碼中返回 js 結(jié)果

# 獲取網(wǎng)頁(yè)性能的響應(yīng)時(shí)間,js腳本中使用return代表返回獲取的結(jié)果

js = "return JSON.stringify(performance.timing);" driver.execute_script(js)

執(zhí)行 JavaScript 也可以通過(guò)傳參的方式傳入元素信息。

element = driver.find_element(by, locator)?

#arguments[0]代表所傳值element的第一個(gè)參數(shù)?

#click()代表js中的點(diǎn)擊動(dòng)作 driver.execute_script("arguments[0].click();",element)

還可以通過(guò)上面的方法點(diǎn)擊被遮擋的元素。 例如:某個(gè)元素在實(shí)際的操作過(guò)程中被其他的元素遮擋,就可以使用 js 點(diǎn)擊的方式。 自動(dòng)化過(guò)程中的報(bào)錯(cuò)如下:

Other element would receive the click:?

<label class="custom-control-label" for="user_remember_me">...</label>

如果出現(xiàn)上面的錯(cuò)誤,可以使用 js 的方式進(jìn)行點(diǎn)擊。

以企業(yè)微信為例,使用 js 點(diǎn)擊添加圖片。

代碼:

#導(dǎo)入依賴?

from selenium import webdriver

from selenium.webdriver.common.byimport By

class TestWework:?

? ?def setup(self): ? ?

?? ?self.driver = webdriver.Chrome() ? ? ?

?#隱式等待

? ? ? ?self.driver.implicitly_wait(2) ?

?def test_upload(self): ??

? ? ?#元素定位 ? ??

? ?element_add = self.driver.find_element\ ? ?

?? ? ? ?(By.CSS_SELECTOR, ".js_upload_file_selector") ? ?

?? ?#執(zhí)行js代碼 ??

? ? ?self.driver.execute_script\ ?

?? ? ? ? ?("arguments[0].click();", element_add) ? ? ? ?self.driver.find_element_by_id('js_upload_input').send_keys('D:\project\demo1\demo.png') ??

? ? ?assert len(self.driver.find_elements(By.CSS_SELECTOR,'.material_pic_list_item')) == 1 ??

?def teardown(self): ??

? ? ?self.driver.quit()

執(zhí)行 JavaScript 腳本就先講到這里啦,大家還想看什么內(nèi)容的文章也可以留言告訴我們哦!


干貨 | JavaScript腳本注入,完成Selenium 無(wú)法做到的那些事的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
武胜县| 江津市| 台山市| 桑日县| 乌鲁木齐县| 交口县| 三穗县| 邛崃市| 湛江市| 临西县| 正定县| 和政县| 屯昌县| 新田县| 海口市| 金华市| 河东区| 岑巩县| 文化| 九龙坡区| 平原县| 柳河县| 洛南县| 电白县| 腾冲县| 项城市| 中阳县| 衢州市| 班戈县| 宝丰县| 武清区| 杭锦后旗| 永胜县| 双鸭山市| 彭水| 陆丰市| 理塘县| 平谷区| 扶绥县| 广南县| 永康市|