前言:
本次教程針對Python語言,selenium教程(調(diào)用js屁擅,對話框處理)
一偿凭、對話框處理
更多的時候我們在實際的應(yīng)用中碰到的并不是簡單警告框,而是提供更多功能的會話框派歌。
本節(jié)重點:
1弯囊、打開對話框
2、關(guān)閉對話框
3胶果、操作對話框中的元素
4匾嘱、window_handles 獲得所有窗口
5、switch_to.windows 切換窗口
(selenium3中早抠,switch_to_windows 更改為switch_to.windows )
舉例:某網(wǎng)站付款之前彈出閱讀協(xié)議彈框霎烙,點擊協(xié)議名稱,打開新窗口并展示協(xié)議內(nèi)容,見下圖悬垃。(本次使用火狐瀏覽器來定位元素)
以下為部分代碼:
#彈出div對話框游昼,點擊第一條協(xié)議?,div對話框的元素定位方法與正常頁面元素一致尝蠕。
driver.find_element_by_xpath("http://div[9]/div[2]/div[1]/p[1]/a[1]").click()
#獲取所有窗口
allhandles = driver.window_handles
#切換新窗口查看協(xié)議
driver.switch_to.window(allhandles[1])
?time.sleep(2)
#切換回div彈窗的窗口?
driver.switch_to.window(allhandles[0])
?time.sleep(2)
#點擊勾選復(fù)選框
driver.find_element_by_id("agreementbox").click()
#點擊確定按鈕
?driver.find_element_by_xpath("http://div[9]/div[2]/div[2]/p[2]/a").click()
?time.sleep(3)
二酱床、調(diào)用js
在實現(xiàn)自動化的過程中,遇到selenium不能實現(xiàn)的功能趟佃,可以調(diào)用js來實現(xiàn)
本節(jié)重點:
1扇谣、調(diào)用 js 方法? execute_script(script, *args)
2、在當(dāng)前窗口/框架 同步執(zhí)行 javaScript
3闲昭、script:JavaScript 的執(zhí)行罐寨。
4、*args:適用任何 JavaScript 腳本序矩。
推薦js學(xué)習(xí)網(wǎng)站:
http://www.w3school.com.cn/js/index.asp
fadeOut()函數(shù)
用于隱藏所有匹配的元素鸯绿,并帶有淡出的過渡動畫效果。
所謂"淡出"的動畫效果簸淀,即元素的不透明度的比例從100%逐漸減小到0%瓶蝴。
如果元素本身是隱藏的,則不對其作任何改變租幕。如果元素是可見的舷手,則將其隱藏。
#第一種方法
?driver.execute_script('$("#buyButton").fadeOut();')
??#第二種方法
?element = driver.find_element_by_xpath("http://form/div/p[1]")
driver.execute_script('$(arguments[0]).fadeOut()', element)
解釋:arguments對象劲绪,它是調(diào)用對象的一個特殊屬性男窟,用來引用Arguments對象。
HTML DOM borderStyle 屬性
borderStyle 屬性在一行聲明中為所有四個設(shè)置或返回邊框樣式贾富。
該屬性可使用 1 到 4 種樣式歉眷。
#將輸入框標(biāo)紅,定義為實線solid
?js = "var q=document.getElementById(\"money\");q.style.border=\"1px solid red\";"
?# 調(diào)用 js
?driver.execute_script(js)
解釋:q.style.border=\"1px solid red\
元素 q 的樣式颤枪,邊框為1個像素紅色
readOnly屬性的日期文本框
#定位文本框汗捡,輸入日期,開始時間為2015-07-24
js = "$('#start_date').val('2015-07-24');“
#調(diào)用js
driver.execute_script(js)
通過js修改display的值
#定位ul[0]這組標(biāo)簽畏纲,修改樣式為block
js = 'document.querySelectorAll("ul")[0].style.display="block";‘
#調(diào)用js
driver.execute_script(js)
解釋:
選擇所有的ul扇住。 [0] 指定這一組標(biāo)簽里的第幾個。
style.display="block"; 修改樣式的display="block" ,表示可見霍骄。
以上台囱,為本次舉例,后續(xù)發(fā)現(xiàn)好用的例子读整,繼續(xù)補充~~~