1. 程式人生 > >Selenium--調用js,對話框處理 (python)

Selenium--調用js,對話框處理 (python)

dom 執行 isp 實現 wid 復選框 switch get 如果

前言:

本次教程針對Python語言,selenium教程(調用js,對話框處理)


一、對話框處理

更多的時候我們在實際的應用中碰到的並不是簡單警告框,而是提供更多功能的會話框。

本節重點:

1、打開對話框

2、關閉對話框

3、操作對話框中的元素

4、window_handles 獲得所有窗口

5、switch_to.windows 切換窗口

(selenium3中,switch_to_windows 更改為switch_to.windows )

舉例:某網站付款之前彈出閱讀協議彈框,點擊協議名稱,打開新窗口並展示協議內容,見下圖。(本次使用火狐瀏覽器來定位元素)

技術分享

以下為部分代碼:

#彈出div對話框,點擊第一條協議,div對話框的元素定位方法與正常頁面元素一致。

driver.find_element_by_xpath("//div[9]/div[2]/div[1]/p[1]/a[1]").click()

#獲取所有窗口

allhandles = driver.window_handles

#切換新窗口查看協議

driver.switch_to.window(allhandles[1])

time.sleep(2)

#切換回div彈窗的窗口

driver.switch_to.window(allhandles[0])

time.sleep(2)

#點擊勾選復選框

driver.find_element_by_id("agreementbox").click()

#點擊確定按鈕

driver.find_element_by_xpath("//div[9]/div[2]/div[2]/p[2]/a").click()

time.sleep(3)


二、調用js

在實現自動化的過程中,遇到selenium不能實現的功能,可以調用js來實現

本節重點:

1、調用 js 方法 execute_script(script, *args)

2、在當前窗口/框架 同步執行 javaScript

3、script:JavaScript 的執行。

4、*args:適用任何 JavaScript 腳本。

推薦js學習網站:

http://www.w3school.com.cn/js/index.asp


fadeOut()函數

用於隱藏所有匹配的元素,並帶有淡出的過渡動畫效果。

所謂"淡出"的動畫效果,即元素的不透明度的比例從100%逐漸減小到0%。

如果元素本身是隱藏的,則不對其作任何改變。如果元素是可見的,則將其隱藏。

#第一種方法

driver.execute_script(‘$("#buyButton").fadeOut();‘)

#第二種方法

element = driver.find_element_by_xpath("//form/div/p[1]")

driver.execute_script(‘$(arguments[0]).fadeOut()‘, element)

解釋:arguments對象,它是調用對象的一個特殊屬性,用來引用Arguments對象。


HTML DOM borderStyle 屬性

borderStyle 屬性在一行聲明中為所有四個設置或返回邊框樣式。

該屬性可使用 1 到 4 種樣式。

技術分享

#將輸入框標紅,定義為實線solid

js = "var q=document.getElementById(\"money\");q.style.border=\"1px solid red\";"

# 調用 js

driver.execute_script(js)

解釋:q.style.border=\"1px solid red\

元素 q 的樣式,邊框為1個像素紅色


readOnly屬性的日期文本框

技術分享

#定位文本框,輸入日期,開始時間為2015-07-24

js = "$(‘#start_date‘).val(‘2015-07-24‘);“

#調用js

driver.execute_script(js)


通過js修改display的值

技術分享

#定位ul[0]這組標簽,修改樣式為block

js = ‘document.querySelectorAll("ul")[0].style.display="block";‘

#調用js

driver.execute_script(js)

解釋:

選擇所有的ul。 [0] 指定這一組標簽裏的第幾個。

style.display="block"; 修改樣式的display="block" ,表示可見。


以上,為本次舉例,後續發現好用的例子,繼續補充~~~

Selenium--調用js,對話框處理 (python)