1. 程式人生 > 其它 >selenium Webdriver自動化測試之執行JavaScript指令碼

selenium Webdriver自動化測試之執行JavaScript指令碼

WebDriver提供了execute_script()方法來執行JavaScript程式碼

具體DOM操作使用方法見之前寫的一篇博文:https://www.cnblogs.com/feng0815/p/8215768.html

關於Webdriver自動化測試之執行JavaScript指令碼可直接參考下面程式碼

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:chenshifeng
@file:base.py
@time:2020/10/17
"""
import os

from selenium import webdriver

class Base:
def

setup_class(self):
# option = webdriver.ChromeOptions()
# option.add_experimental_option('w3c', False)
# self.driver = webdriver.Chrome(options=option)
browser = os.getenv('browser')
if browser == 'firefox':
self.driver = webdriver.Firefox()
elif browser == 'headless':
self.driver = webdriver.phantomjs()
else
:
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.implicitly_wait(5)

<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">teardown_class</span>(<span class="hljs-params">self</span>):</span>
    self.driver.quit()

上面程式碼為演示程式碼中from test_selenium.base import Base 匯入的程式碼

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:chenshifeng
@file:test_js.py
@time:2020/10/17
"""
from time import sleep

from test_selenium.base import Base

class TestJS(Base):
# 百度搜索演示
def test_js(self):
self.driver.get('https://www.baidu.com')
self.driver.find_element_by_id('kw').send_keys('selenium測試')
element = self.driver.execute_script('return document.getElementById("su")')
element.click() # 點選搜尋
sleep(2)
self.driver.execute_script('document.documentElement.scrollTop=10000') # 頁面向下滑動10000個畫素
sleep(2)
self.driver.find_element_by_xpath('//*[@id="page"]/div/a[10]').click() # 點選下一頁
sleep(2)
self.driver.execute_script('document.documentElement.scrollTop=10000') # 頁面向下滑動10000個畫素
sleep(2)
for code in [
'return document.title', 'return JSON.stringify(performance.timing)'
]:
print(self.driver.execute_script(code))
# print(self.driver.execute_script('return document.title;return JSON.stringify(performance.timing)'))
# JSON.stringify() 方法用於將 JavaScript 值轉換為 JSON 字串。
# performance.timing 載入和使用當前頁面期間發生的各種事件的效能計時資訊。

<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">test_modify_traindate</span>(<span class="hljs-params">self</span>):</span>
    <span class="hljs-comment"># 12306時間選擇框演示</span>
    self.driver.get(<span class="hljs-string">'https://www.12306.cn/index/'</span>)
    sleep(<span class="hljs-number">2</span>)
    <span class="hljs-comment"># 通過js程式碼設定時間(需先去除readonly屬性)</span>
    self.driver.execute_script(
        <span class="hljs-string">'a=document.getElementById("train_date");a.removeAttribute("readonly");a.value="2020-12-31"'</span>)
    sleep(<span class="hljs-number">2</span>)
    print(self.driver.execute_script(<span class="hljs-string">'return document.getElementById("train_date").value'</span>))

常用JavaScript指令碼

driver.execute_script("document.body.style.zoom='0.5'") #網頁縮小
driver.execute_script("document.body.style.zoom='1.7'") #網頁放大
driver.executeScript("window.scrollTo(window.pageXOffset,document.body.scrollHeight)"); #滑動到頁面最底部
driver.executeScript("window.scrollTo(window.pageXOffset, 0)");#滑動到頁面最頂部
driver.executeScript("arguments[0].scrollIntoView(false);", driver.findElement(by));#上下滑動使元素和視窗底部對齊
driver.executeScript("arguments[0].scrollIntoView(true);", driver.findElement(by));  #上下滑動使元素和視窗頂部對齊
driver.executeScript("window.scrollTo(document.body.scrollWidth, window.pageYOffset)") #水平滑動到頁面最右邊

轉載自https://www.cnblogs.com/feng0815/p/13832411.html