1. 程式人生 > 其它 >Selenium(16):通過呼叫javascript進行處理

Selenium(16):通過呼叫javascript進行處理

呼叫javascript

  當webdriver遇到無法完成的操作時候,這個時候可以使用javascript來完成,webdriver提供了execute_script()介面來呼叫js程式碼。

執行js有兩種場景:

  一種是在頁面上直接執行js

  另一種是在某個已經定位的元素上執行js

常用的呼叫javascript語法如下

設定彈框的文字內容
  js_code_str = 'alert("hello,world !!");'
加邊框 元素高亮顯示
  js_code_str_01 = "arguments[0].style.border='5px solid red';"
瀏覽器滾動
  js_code_str_02 = 'document.body.scrollTop=10000;'
滾動到指定元素
  js_code_str_03 = 'arguments[0].scrollIntoView();'
修改元素的屬性 一般用在時間控制元件只能選不能輸入,可以把文字框的readonly屬性去掉
  js_code_str_04 = 'arguments[0].setAttribute("value","newdream");'
刪除元素屬性
  js_code_str_05 = 'arguments[0].removeAttribute("value");'

程式碼如下:

import os
from selenium import webdriver
from selenium.webdriver.common.by import By

current_path = os.path.dirname(os.path.abspath(__file__))  # 當前路徑
driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe')  # driver路徑
pages_path = os.path.join(current_path,'../pages/element_samples.html
') # 本地網頁路徑 driver = webdriver.Chrome(executable_path=driver_path) # Firefox,Ie等 driver.get('file://%s'%pages_path) # 本地網頁開啟file:// 開啟部署好的站點http:// # 設定彈框的文字內容 js_code_str = 'alert("hello,world !!");' driver.execute_script(js_code_str) # 加邊框 元素高亮顯示 js_code_str_01 = "arguments[0].style.border='5px solid red';
" element_obj_01 = driver.find_element(By.XPATH,'//input[@name="attach[]"]') driver.execute_script(js_code_str_01,element_obj_01) # 瀏覽器滾動 js_code_str_02 = 'document.body.scrollTop=10000;' driver.execute_script(js_code_str_02) # 滾動到指定元素 js_code_str_03 = 'arguments[0].scrollIntoView();' element_obj_03 = driver.find_element(By.XPATH,'//input[@id="friend"]') driver.execute_script(js_code_str_03,element_obj_03) # 修改元素的屬性 一般用在時間控制元件只能選不能輸入,可以把文字框的readonly屬性去掉 js_code_str_04 = 'arguments[0].setAttribute("value","newdream");' element_obj_04 = driver.find_element(By.XPATH,'//input[@name="alterbutton"]') driver.execute_script(js_code_str_04,element_obj_04) # 刪除元素屬性 js_code_str_05 = 'arguments[0].removeAttribute("value");' element_obj_05 = driver.find_element(By.XPATH,'//input[@name="alterbutton"]') driver.execute_script( js_code_str_05 , element_obj_05 )