selenium呼叫JavaScript定位元素及事件操作
阿新 • • 發佈:2018-12-02
JavaScript 事件
HTML 事件是發生在 HTML 元素上的事情。
當在 HTML 頁面中使用 JavaScript 時, JavaScript 可以觸發這些事件。
JavaScript 可以做什麼?
事件可以用於處理表單驗證,使用者輸入,使用者行為及瀏覽器動作:
頁面載入時觸發事件
頁面關閉時觸發事件
使用者點選按鈕執行動作
驗證使用者輸入內容的合法性
等等 …
具體請檢視:http://www.runoob.com/js/js-events.html
頁面經常有一些操作是selenium中無法實現的,我們可以通過呼叫JavaScript去實現,還有一些元素是無法通過selenium常用的方法去定位到的,好了廢話不多說直接上程式碼;
#coding=utf8
import unittest #呼叫unittest框架
from selenium import webdriver
from time import sleep
class Tests(unittest.TestCase):
"""
測試用例
···
def setUp(self):
driver = webdriver.Chrome()
# driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver. maximize_window()
driver.get('http://www.baidu.com/')
self.driver = driver
def tearDown(self):
sleep(2)
self.driver.quit()
def test1(self):
driver = self.driver
# 使用js定位元素
el = driver.execute_script('return document.getElementById("kw")' )
el.clear()
el.send_keys('Python')
# 使用js滾動螢幕
driver.execute_script("scrollBy(0,innerHeight)")#向下滾動
sleep(1)
driver.execute_script("scrollBy(0,-innerHeight)")#向上滾動
el = driver.find_element_by_link_text('百度首頁')
# 使用js點選元素, 第二個引數是要點選的元素物件
driver.execute_script("arguments[0].click();", el)