一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Selenium2+python自動化17

 淡茶飄香cl 2018-06-13

前言

    selenium并不是萬能的,有時候頁面上操作無法實現(xiàn)的,這時候就需要借助JS來完成了。

常見場景:

當頁面上的元素超過一屏后,想操作屏幕下方的元素,是不能直接定位到,會報元素不可見的。

這時候需要借助滾動條來拖動屏幕,使被操作的元素顯示在當前的屏幕上。

滾動條是無法直接用定位工具來定位的。selenium里面也沒有直接的方法去控制滾動條,

這時候只能借助J了,還好selenium提供了一個操作js的方法:

execute_script(),可以直接執(zhí)行js的腳本。


一、JavaScript簡介

1.JavaScript是世界上最流行的腳本語言,因為你在電腦、手機、平板上瀏覽的所有的網(wǎng)頁,

以及無數(shù)基于HTML5的手機App,交互邏輯都是由JavaScript驅(qū)動的。簡單地說,

JavaScript是一種運行在瀏覽器中的解釋型的編程語言。

那么問題來了,為什么我們要學(xué)JavaScript?
2.有些特殊的操作selenium2+python無法直接完成的,JS剛好是這方面的強項,所以算是一個很

好的補充。對js不太熟悉的,可以網(wǎng)上找下教程,簡單了解些即可。

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



二、控制滾動條高度

1.滾動條回到頂部:

js="var q=document.getElementById('id').scrollTop=0"
driver.execute_script(js)
2.滾動條拉到底部

js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)

3.這里可以修改scrollTop 的值,來定位右側(cè)滾動條的位置,0是最上面,10000是最底部。

版權(quán)所有,微信公眾號:yoyoketang

三、橫向滾動條
1.有時候瀏覽器頁面需要左右滾動(一般屏幕最大化后,左右滾動的情況已經(jīng)很少見了)。
2.通過左邊控制橫向和縱向滾動條scrollTo(x, y)js = "window.scrollTo(100,400);"

driver.execute_script(js)

3.第一個參數(shù)x是橫向距離,第二個參數(shù)y是縱向距離



四、Chrome瀏覽器

1.以上方法在Firefox上是可以的,但是用Chrome瀏覽器,發(fā)現(xiàn)不管用。
谷歌瀏覽器就是這么任性,不聽話,于是用以下方法解決谷歌瀏覽器滾動條的問題。

2.Chrome瀏覽器解決辦法:

js = "var q=document.body.scrollTop=0"
driver.execute_script(js)

 

五、元素聚焦
1.雖然用上面的方法可以解決拖動滾動條的位置問題,但是有時候無法確定我需要操作的元素

在什么位置,有可能每次打開的頁面不一樣,元素所在的位置也不一樣,怎么辦呢?

2.這個時候我們可以先讓頁面直接跳到元素出現(xiàn)的位置,然后就可以操作了。同樣需要借助JS去實現(xiàn)。
3.元素聚焦:

target = driver.find_element_by_xxxx()
driver.execute_script("arguments[0].scrollIntoView();", target)

 

六、獲取瀏覽器名稱:driver.name

1.為了解決不同瀏覽器操作方法不一樣的問題,可以寫個函數(shù)去做兼容。

2.先用driver.name獲取瀏覽器名稱,然后用if語句做個判斷



七、兼容性
1.兼容谷歌和firefox/IE


八、scrollTo函數(shù)
樓下有個小伙伴說這個scrollTo函數(shù)不存在兼容性問題,小編借花獻佛了。
--scrollHeight 獲取對象的滾動高度。 
--scrollLeft 設(shè)置或獲取位于對象左邊界和窗口中目前可見內(nèi)容的最左端之間的距離。 
--scrollTop 設(shè)置或獲取位于對象最頂端和窗口中可見內(nèi)容的最頂端之間的距離。 
--scrollWidth 獲取對象的滾動寬度。
scrollTo函數(shù)不存在兼容性問題,直接用這個函數(shù)就可以了

#滾動到底部
js = "window.scrollTo(0,document.body.scrollHeight)"
driver.execute_script(js)

#滾動到頂部
js = "window.scrollTo(0,0)"
driver.execute_script(js)

九、參考代碼如下:
# coding:utf-8
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
print driver.name
## 回到頂部
#def scroll_top():
#     if driver.name == "chrome":
#        js = "var q=document.body.scrollTop=0"
#     else:
#         js = "var q=document.documentElement.scrollTop=0"
#     return driver.execute_script(js)
# 拉到底部
#def scroll_foot():
#    if driver.name == "chrome":
#         js = "var q=document.body.scrollTop=10000"
#     else:
#         js = "var q=document.documentElement.scrollTop=10000"
#     return driver.execute_script(js)

#滾動到底部
js = "window.scrollTo(0,document.body.scrollHeight)"
driver.execute_script(js)

#滾動到頂部
js = "window.scrollTo(0,0)"
driver.execute_script(js)


# 聚焦元素
target = driver.find_element_by_xxxx()
driver.execute_script("arguments[0].scrollIntoView();", target)

JS功能還是很強大的,它還可以處理富文本、內(nèi)嵌滾動條的問題,下次有空了再整理下。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    精品香蕉国产一区二区三区| 精品少妇人妻av一区二区蜜桃 | 中文字幕日韩一区二区不卡| 国产对白老熟女正在播放| 欧美精品久久99九九| 欧美黑人暴力猛交精品| 日韩国产传媒在线精品| 亚洲av一区二区三区精品| 日本乱论一区二区三区| 日韩特级黄片免费在线观看| 久久综合亚洲精品蜜桃| 婷婷九月在线中文字幕| 国产精品一级香蕉一区| 欧美小黄片在线一级观看| 91人人妻人人爽人人狠狠| 欧美日韩国产免费看黄片| 日韩精品视频高清在线观看| 国产三级不卡在线观看视频| 亚洲国产成人精品福利| 国产综合一区二区三区av | 男人和女人草逼免费视频| 老司机激情五月天在线不卡 | 日本 一区二区 在线| 色婷婷丁香激情五月天| 国产性情片一区二区三区| 欧美日本精品视频在线观看| 久久热在线视频免费观看| 国产精品欧美在线观看| 大香蕉大香蕉手机在线视频| 好吊日在线观看免费视频| 色综合久久中文综合网| 97人妻人人揉人人躁人人| 激情五月激情婷婷丁香| 国产精品激情在线观看| 99精品人妻少妇一区二区人人妻| 精品女同一区二区三区| 欧美三级精品在线观看| 亚洲综合日韩精品欧美综合区| 男生和女生哪个更好色| 日本高清一区免费不卡| 国产一级内射麻豆91|