国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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ó)家法律
阳山县| 桂林市| 阿合奇县| 额济纳旗| 荆门市| 东乡县| 大方县| 黄平县| 沁阳市| 漳浦县| 丽水市| 米泉市| 偃师市| 阳高县| 临泽县| 婺源县| 乌拉特后旗| 资兴市| 建平县| 峨山| 宜昌市| 平陆县| 石阡县| 通渭县| 祁东县| 宽城| 班戈县| 青冈县| 鲁甸县| 故城县| 佛山市| 太仆寺旗| 阳朔县| 株洲市| 泸西县| 巴马| 白城市| 南澳县| 富民县| 囊谦县| 密云县|