1. 程式人生 > >python+selenium十一:jQuery和js語法、js處理iframe python+selenium十一:jQuery和js語法、js處理iframe

python+selenium十一:jQuery和js語法、js處理iframe python+selenium十一:jQuery和js語法、js處理iframe

python+selenium十一:jQuery和js語法、js處理iframe

 
selenium 執行jQuery/js語法
driver.execute_script(jQuery/js)

1、jQuery

jQuery只支援css語法:

jquery = '$(CSS).val("XXX");'   # 根據css語法定位到元素,輸入內容
jquery = '$(CSS).val('');' # 清空
jquery = '$(CSS).click();' # 點選

# 在某個已經定位的元素上執行 jquery

 

button = driver.find_element_by_class_name('btn')

driver.execute_script('$(arguments[0]).click()', button)

 

# Jquery控制瀏覽器內嵌div的滾動條 

Jquery = '$(".modal-body").scrollTop(10000)'

driver.execute_script(Jquery)

 
  

# Jquery控制瀏覽器的滾動條 

Jquery = '$(document).scrollTop(1000)'

driver.execute_script(Jquery)

 

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)

 

# 把元素不可見屬性改為可見

js = "document.getElementsByClassName('password')[0].style.display='block'"

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不一定通用

selenium 執行jQuery/js語法
driver.execute_script(jQuery/js)

1、jQuery

jQuery只支援css語法:

jquery = '$(CSS).val("XXX");'   # 根據css語法定位到元素,輸入內容
jquery = '$(CSS).val('');' # 清空
jquery = '$(CSS).click();' # 點選

# 在某個已經定位的元素上執行 jquery

 

button = driver.find_element_by_class_name('btn')

driver.execute_script('$(arguments[0]).click()', button)

 

# Jquery控制瀏覽器內嵌div的滾動條 

Jquery = '$(".modal-body").scrollTop(10000)'

driver.execute_script(Jquery)

 

# Jquery控制瀏覽器的滾動條 

Jquery = '$(document).scrollTop(1000)'

driver.execute_script(Jquery)

 

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)

 

# 把元素不可見屬性改為可見

js = "document.getElementsByClassName('password')[0].style.display='block'"

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不一定通用