在調試Selenium腳本中,有時因為操作太快或操作不明顯而不清楚是否定位到了正確的元素。我們可用通過執行js為定位到的元素添加樣式,來高亮顯示定位到的元素。
在Selenim Webdriver中,可以通過driver.exectue_scirpt() 執行JavaScript代碼,執行的JavaScript代碼是支持傳入參數的,甚至可以傳入定位到的元素,如:
exectue_script('js腳本', 參數1,參數2,參數3...)
,在JavaScript腳本字符串中使用arguments[n]來表示匹配第幾個參數。
示例代碼如下:
from selenium import webdriver
from time import sleep
STYLE = "background: green; border: 2px solid red;" # 高亮的樣式
def find(driver, by, expr):
element = driver.find_element(by, expr)
driver.execute_script("arguments[0].setAttribute('style', arguments[1]);",element, STYLE)
return element
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
find(driver, 'id', 'kw').send_keys("博客園 韓志超")
find(driver, 'id', 'su').click()
sleep(3)
driver.quit()
以上代碼中,
by只定位方式,支持'id','xpath', 'name', 'class name', 'link text', 'partial link text', 'css selector', expr為元素對應的定位表達式。
driver.execute_script("arguments[0].setAttribute('style', arguments[1]);",element, STYLE)
將定位到的元素替換到arguments[0], 樣式STYLE替換arguments[1],及為該元素添加高亮楊樣式。
執行完結果如下圖: