国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【selenium】執(zhí)行js腳本

這篇具有很好參考價(jià)值的文章主要介紹了【selenium】執(zhí)行js腳本。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在當(dāng)前窗口或框架上下文中,執(zhí)行 JavaScript 腳本。

使用JavaScript操作頁面:

  • 解決點(diǎn)擊不生效的問題
  • 頁面滾動
  • 修改元素屬性

JavaScript

// 進(jìn)入瀏覽器 -> 檢查 -> console
// 獲取網(wǎng)頁名稱
document.title

// 顯示 alert
window.alert("hello selenium")

// 獲取網(wǎng)頁的性能數(shù)據(jù)
JSON.stringify(performance.timing)

Selenium 調(diào)用

def execute_script(self, script, *args):
    # script: JavaScript 代碼
   	# args: 任何適用于 JavaScript 的參數(shù)
    ...
    
# 示例:返回 h1 標(biāo)簽元素的文本
driver.get("https://www.selenium.dev/")
header = driver.find_element(By.CSS_SELECTOR, "h1")
# return: 返回 js 執(zhí)行結(jié)果
# arguments: 參數(shù)傳遞
text = driver.execute_script('return arguments[0].innerText', header)
assert text == "Selenium automates browsers. That's it!"
定位元素
js = 'return document.getElementById("su")'
driver.execute_script(js)
滑動

常見的滑動場景分為四種:文章來源地址http://www.zghlxwxcb.cn/news/detail-582260.html

  • 滑動至底部
  • 滑動至頂部
  • 滑動至具體位置
  • 滑動至目標(biāo)元素可見
# 模擬鼠標(biāo)滾輪,滑動頁面至底部
js = "window.scrollTo(0, document.body.scrollHeight)" 
driver.execute_script(js)

# 模擬鼠標(biāo)滾輪,滑動頁面至頂部
js = "window.scrollTo(0, 0)"
driver.execute_script(js)
js = "window.scrollBy(0, 500)"  # 向下滑動500個(gè)像素
js = "window.scrollBy(0, -500)" # 向上滾動500個(gè)像素
js = "window.scrollBy(500, 0)"  # 向右滑動500個(gè)像素
js = "window.scrollBy(-500, 0)" # 向左滾動500個(gè)像素

# 滑動到具體位置
driver.execute_script("window.scrollTo(x, y)")  

# 向下滾動至-元素可見
driver.execute_script("arguments[0].scrollIntoView();", element)
 
# 向上滾動至-元素可見
driver.execute_script("arguments[0].scrollIntoView(false);", element)
示例:操作控件 & 獲取返回值
# 場景:百度搜索結(jié)果頁,滑動到頁面底部,點(diǎn)擊下一頁

"""
1. 進(jìn)入搜索結(jié)果頁
"""
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("selenium")
ele_search = driver.execute_script('return document.getElementById("su")')
ele_search.click()

"""
2. 通過 JavaScript 滑動到頁面底部
"""
js_code = "document.documentElement.scrollTop=10000"
driver.execute_script(js_code)
sleep(2)
driver.find_element_by_css_selector("#page a:nth-last-child(1)").click()

"""
3. 斷言頁面跳轉(zhuǎn),打印頁面標(biāo)題和頁面性能數(shù)據(jù)
"""
# 方法一: 多條 js 腳本分別執(zhí)行
js_codes = [
    "return document.title",
    "return JSON.stringify(performance.timing)"
]
for code in js_codes:
    print(self.driver.execute_script(code))

# 方法二 合并執(zhí)行
# 注意,在 title 處已經(jīng)返回,后續(xù)不會執(zhí)行
js_code = "return document.title;return JSON.stringify(performance.timing)"
title = self.driver.execute_script(js_code)
assert title == "selenium_百度搜索"

# 會打印 timing ,因?yàn)?title 未返回
js_code = "document.title;return JSON.stringify(performance.timing)"
print(self.driver.execute_script(js_code))
示例:修改控件屬性
"""
時(shí)間控件屬性為 readonly
手動測試時(shí):手動去選擇對應(yīng)的時(shí)間
自動化測試時(shí):使用 js 修改控件屬性
	- 要取消日志的 readonly 屬性
	- 給 value 賦值

場景:12306 網(wǎng)站內(nèi)修改出發(fā)日期
"""

"""
1. 打開 12306
"""
driver.get("https://www.12306.cn/index/")

"""
2. 修改出發(fā)日期為 2021-5-12
"""
driver.execute_script(
    'train_date=document.getElementById("train_date");'
    'train_date.removeAttribute("readonly");'
    'train_date.value = "2021-05-12"'
)

"""
3. 打印出發(fā)日期
"""
print(driver.execute_script(
    'return document.getElementById("train_date").value')
)
driver.quit()

到了這里,關(guān)于【selenium】執(zhí)行js腳本的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于Selenium模塊實(shí)現(xiàn)無界面模式 & 執(zhí)行JS腳本

    基于Selenium模塊實(shí)現(xiàn)無界面模式 & 執(zhí)行JS腳本

    此篇文章主要介紹如何使用 Selenium 模塊實(shí)現(xiàn) 無界面模式 執(zhí)行JS腳本(把滾動條拉到底部),并以具體的示例進(jìn)行展示。 創(chuàng)建瀏覽器對象之前,創(chuàng)建 options 功能對象 : options = webdriver.ChromeOptions() 添加無界面功能參數(shù): options.add_argument(\\\"--headless\\\") 構(gòu)造瀏覽器對象,打開瀏覽器,并

    2024年02月13日
    瀏覽(24)
  • python腳本——selenium自動化執(zhí)行一些網(wǎng)頁上的操作

    通過python的selenium模塊,自動化執(zhí)行一些網(wǎng)頁上的重復(fù)的無聊的工作。 chromdriver下載地址

    2024年02月13日
    瀏覽(20)
  • Selenium4+Python3 - Iframe、Select控件、交互式彈出框、執(zhí)行JS、Cookie操作

    Selenium4+Python3 - Iframe、Select控件、交互式彈出框、執(zhí)行JS、Cookie操作

    iframe識別: 語法: driver.switch_to.frame(‘方式’) 1、常見處理方法三種 index:下標(biāo) name:id或name屬性的值 webelement:元素 2、通過下標(biāo)進(jìn)入 進(jìn)入第一個(gè)iframe: 3、通過id或name屬性的值進(jìn)入 通過id或name屬性的值進(jìn)入指定的iframe: 4、通過iframe元素進(jìn)入iframe 通過iframe元素進(jìn)入指定i

    2024年02月04日
    瀏覽(88)
  • JavaScript+Selenium自動化測試_selenium和js能一起做自動化測試

    JavaScript+Selenium自動化測試_selenium和js能一起做自動化測試

    var webdriver = require(‘selenium-webdriver’), By = webdriver.By, until = webdriver.until; var driver = new webdriver.Builder() .forBrowser(‘chrome’) .build(); driver.get(‘https://www.baidu.com’); driver.findElement(By.id(‘kw’)).sendKeys(‘webdriver’); driver.findElement(By.id(‘su’)).click(); driver.wait(until.titleIs(‘webdriver_百度

    2024年04月25日
    瀏覽(24)
  • selenium 執(zhí)行js后拿不到返回值的原因

    1.js代碼報(bào)錯(cuò),可以把代碼放到瀏覽器控制臺中執(zhí)行查看具體報(bào)錯(cuò)信息; 2.如果js中使用了ajax調(diào)用,最后return出去請求的結(jié)果值,記得把參數(shù)async設(shè)置為false;async默認(rèn)設(shè)置為true,如果你的返回結(jié)果在請求的后面程序不會等待ajax請求返回就會執(zhí)行完畢,會直接執(zhí)行ajax后面的語句

    2024年02月04日
    瀏覽(15)
  • selenium執(zhí)行js代碼的兩個(gè)方法你都會用嗎?

    selenium執(zhí)行js代碼的兩個(gè)方法你都會用嗎?

    在使用selenium做web自動化的時(shí)候,很多小伙伴反饋有些頁面上動作我們無法通過selenium封裝的方法直接去做,比如說修改元素的屬性,影子節(jié)點(diǎn)的操作等等。需要使用原生的js代碼去實(shí)現(xiàn),而selenium也給我提供了兩個(gè)執(zhí)行js代碼的方法,一個(gè)是execute_script,另一個(gè)是execute_async_s

    2024年04月28日
    瀏覽(21)
  • 【技巧】ScriptEngine--Java動態(tài)執(zhí)行JS Javascript腳本(可調(diào)用java的方法)

    【技巧】ScriptEngine--Java動態(tài)執(zhí)行JS Javascript腳本(可調(diào)用java的方法)

    開發(fā)手冊 Java Platform, Standard Edition Nashorn User\\\'s Guide, Release 14 用戶手冊 Nashorn User\\\'s Guide (oracle.com) https://docs.oracle.com/en/java/javase/14/nashorn/ 甚至可以讓前端來寫后端業(yè)務(wù)代碼 可以通過js調(diào)用java的方法, 通過傳參的方式將java對象傳給js 可以單獨(dú)寫個(gè)JsUtil 讓js來調(diào)用 里邊寫常用的方法

    2024年02月01日
    瀏覽(18)
  • 滲透測試——python腳本(selenium模塊)暴力破解

    滲透測試——python腳本(selenium模塊)暴力破解

    免責(zé)聲明 本文僅用于技術(shù)討論與學(xué)習(xí),利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負(fù)責(zé),文章作者不為此承擔(dān)任何責(zé)任。 背景:實(shí)習(xí)的第二個(gè)周的第二個(gè)評估網(wǎng)站項(xiàng)目,很明顯,這里沒有驗(yàn)證碼(有驗(yàn)證碼的情況也可以用這個(gè)方法,具

    2024年02月02日
    瀏覽(88)
  • selenium(4)-------自動化測試腳本(python)

    selenium(4)-------自動化測試腳本(python)

    webdriverAPI 一)定位元素的方式,必問 1.1)id來定位元素,前提是元素必須具有id屬性,因?yàn)橛械脑厥菦]有id的 1.2)name,元素必須有name,并且必須全局唯一 1.3)tagname,元素是一定有的,但是必須全局唯一才可以定位到元素 1.4)classname,class的名字,必須全局唯一 1.5)link_text,通過

    2024年02月02日
    瀏覽(27)
  • selenium(7)----自動化測試腳本(python版本)

    selenium(7)----自動化測試腳本(python版本)

    1)HTML報(bào)告的生成:測試報(bào)告最好要生成在一個(gè)特殊的目錄下面 1)在python的lib文件下面添加文件是HTMLTestRunner.py文件: self就是當(dāng)前類中的實(shí)例 2)HTML報(bào)告的生成步驟: 2.1)解決HTML文件存放的問題:創(chuàng)建一個(gè)文件夾 2.2)HTML報(bào)告命名問題,如何進(jìn)行動態(tài)命名,每一次生成的文件名稱如何不

    2024年01月21日
    瀏覽(48)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包