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

歡迎光臨散文網(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ó)家法律
正定县| 桦甸市| 汶川县| 靖边县| 吉木乃县| 留坝县| 固原市| 仪陇县| 扎鲁特旗| 东港市| 宁陕县| 游戏| 曲阳县| 寿阳县| 贵阳市| 册亨县| 蓝山县| 香港| 南漳县| 枞阳县| 汨罗市| 昂仁县| 潮州市| 九台市| 宁安市| 运城市| 弋阳县| 出国| 博爱县| 青州市| 喀什市| 邵武市| 林周县| 临江市| 胶州市| 维西| 东阿县| 扎鲁特旗| 瑞安市| 西林县| 岳西县|