selenium自動化之js處理滾動條和元素聚焦

  selenium並非萬能的,有時候頁面上操做沒法實現的,這時候就須要藉助JS來完成了。html

  當咱們頁面上的元素超過一屏後,想操做屏幕下方的元素,是不能直接操做的,會報元素不可見異常的。這時候須要藉助滾動條來拖動屏幕,使被操做的元素顯示在當前的屏幕上。滾動條是沒法直接用定位工具來定位的。selenium裏面也沒有直接的方法去控制滾動條,這時候只能藉助Js了,還好selenium提供了一個操做js的方法:execute_script(),能夠直接執行js的腳本。python

  1、控制滾動條高度web

  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)ui

    能夠修改scrollTop 的值,來定位右側滾動條的位置,0是最上面,10000是最底部。spa

    以上方法在Firefox和IE瀏覽器上上是能夠的,可是用Chrome瀏覽器,發現無論用。htm

    Chrome瀏覽器解決辦法:blog

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

 

  2、橫向滾動條
    1.有時候瀏覽器頁面須要左右滾動(通常屏幕最大化後,左右滾動的狀況已經不多見了)。
    2.經過左邊控制橫向和縱向滾動條scrollTo(x, y)

js = "window.scrollTo(100,400);"

driver.execute_script(js)

  3、元素聚焦

    雖然用上面的方法能夠解決拖動滾動條的位置問題,可是有時候沒法肯定我須要操做的元素在什麼位置,有可能每次打開的頁面不同,元素所在的位置也不同,怎麼辦呢?這個時候咱們能夠先讓頁面直接跳到元素出現的位置,而後就能夠操做了。

    一樣須要藉助JS去實現。 具體以下:

    代碼:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @建立時間: 2018/11/26 9:43
# @建立人 : Kevin
# @IDE : PyCharm
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get('https://www.cnblogs.com/kevin-liutianping/p/9967792.html')
a= driver.find_element_by_xpath('//div[@id="author_profile_detail"]/a[1]') # 定位元素
driver.execute_script("arguments[0].scrollIntoView();",a) # 執行js,使滾動條下滑至a元素位置
sleep(5)                             # 查看滾動條是否下滑

a.click() # 點擊操做
driver.quit()看到沒,這樣咱們就不用管元素在屏幕上的具體哪一個位置啦!
相關文章
相關標籤/搜索