標籤:into read inner 清空 通用 富文本 scrolltop Edito 支援
selenium 執行jQuery/js文法
driver.execute_script(jQuery/js)
1、jQuery
jQuery只支援css文法:
jquery = ‘$(CSS).val("XXX");‘ # 根據css文法定位到元素,輸入內容
jquery = ‘$(CSS).val(‘‘);‘ # 清空
jquery = ‘$(CSS).click();‘ # 點擊
2、js
1.通過id擷取 document.getElementById(“id”)----------擷取的是單個
2.通過name擷取 document.getElementsByName(“Name”)[0]---------擷取的是多個 返回的是list
3.通過標籤名選取元素 document.getElementsByTagName(“tag”) --------擷取的是多個
4.通過CLASS類選取元素 document.getElementsByClassName(“class”) --------擷取的是多個 相容性:IE8及其以下版本的瀏覽器未實現getElementsByClassName方法
5.通過CSS選取器選取元素 document.querySelectorAll(“css selector") 相容性:IE8及其以下版本的瀏覽器只支援CSS2標準的選取器文法
js = ‘document.getElementById(xxx).value="XXXX"‘ # 輸入值
js = ‘document.getElementsByClassName("prefpanelgo")[0].click();‘ # 點擊
# 去掉元素的readonly屬性
js = ‘document.getElementById("xxx").removeAttribute("readonly");‘
driver.execute_script(js)
# 去掉日期控制項的readonly屬性,並填入日期
js = ‘document.getElementById(xxx).removeAttribute("readonly");document.getElementById(xxx).value="20xx-xx-xx"‘
driver.execute_script(js)
jquery = ‘$("#train_date").val("");$("#train_date").val("20xx-xx-xx");$("#query_ticket").click()‘
driver.execute_script(jquery)
# 聚焦元素
target = self.find_element(locator)
driver.execute_script("arguments[0].scrollIntoView();", target)
內嵌捲軸:
# 縱向底部
# 擷取id是單個元素,因為一個頁面上id是唯一的
#js = ‘document.getElementById("XXXX").scrollTop=10000‘
# 擷取的class是多個,取list的第一個對象
# 頂部:scrollTop=0,底部:scrollTop=10000
js0 = ‘document.getElementsByClassName("scroll")[0].scrollTop=10000‘
driver.execute_script(js0)
# 控制橫向捲軸位置
# 最左邊:scrollLeft=0,最右邊:scrollLeft=10000
js1 = ‘document.getElementsByClassName("scroll")[0].scrollLeft=10000‘
driver.execute_script(js1)
# js處理iframe
# Js處理iframe無需先切換到iframe上,再切回來操作。 它可以在iframe上和首頁面上來回自由操作-----這是Js的強大之處
js = ‘document.getElementById("Editor_Edit_EditorBody_ifr").contentWindow.document.body.innerHTML="%s"‘ % jstext
driver.execute_script(js)
# innerHTML:插入html常值內容
# 以上js寫法只是專門處理富文本(有iframe)相關的問題,其它地方遇到iframe不一定通用
python+selenium十一:jQuery和js文法、js處理iframe