selenium常用操作之JS處理滾動條操作

2022-07-27 19:06:11 字數 2094 閱讀 7301

selenium並不是萬能的,有時候頁面上操作無法實現的,這時候就需要借助js來完成了。

常見場景:

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

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

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

這時候只能借助js了,selenium當中可以用execute_script()方法執行js的指令碼。

語句:

execute_script("arguments[0].scrollintoview();",target)

execute_script("js語句"

其中target為find_element_by_xx及我們要定位的元素。

所以滾動額步驟是:

1.通過selenium的定位元素方法找到該元素

2.通過執行js指令碼,將元素滾動到可見區域。

示例**:

#

定位要操作的元素

target_ele=driver.find_element_by_id("su"

)#將元素滾動到可見區域

driver.excute_script("

arguments[0].scrollintoview();

",target_ele)

幾種滾動方式如下:

1.移動元素target_ele物件的頂端與當前視窗的頂部對齊:

driver.excute_script("

arguments[0].scrollintoview();

",target_ele)

#或

driver.excute_script("arguments[0].scrollintoview(true);",target_ele)

2.移動元素target_ele物件的底端與當前視窗的底部對齊:

driver.excute_script("

arguments[0].scrollintoview(false);

",target_ele)

3.移動到頁面底部

driver.execute_script("windows.scrollto(0,document.body.scrollheight)")

js="var q=document.getelementbyid('su').scrolltop=10000"

driver.execute_script(js)

4.移動到頁面頂部

driver.execute_script("windows.scrollto(document.body.scrollheight,document.body.scrollheight)")

js="var q=document.getelementbyid('su').scrolltop=0"

driver.execute_script(js)

5.橫向滾動條

有時候瀏覽器頁面需要左右滾動(一般螢幕最大化後,左右滾動的情況已經很少見了)。

driver.execute_script("windows.scrollto(100,400)")#第乙個引數100是橫向距離,第二個引數400是縱向距離

除了滾動的方式操作滾動條在某些特殊頁面可以用tab鍵來切換焦點定位到元素,這個時候我們就可以用鍵盤的tanb鍵來實現定位。

示例**:

from selenium.webdriver.common.keys import keys

driver.find_element_by_id("id_login_method_0").send_keys(keys.tab)

selenium常用操作之JS處理日曆控制項

在web自動化中,我們會遇到日曆控制這種場景,大致分為兩種。1.可以直接輸入日期 2.不能夠直接輸入日期,只能選擇。對於可以直接輸入日期的我們可以用webdriver 去設定日期,流程為 1.定位到該日期輸入的input 2.直接使用sendkeys 方法 輸入正確格式的日期 示例 如下 drive...

selenium常用操作

from selenium import webdriver driver webdriver.chrome 切換到某iframe driver.switch to.frame 元素 退出iframe到最外層 driver.switch to.default content 退出到上一層頁面 dri...

Selenium之Canvas畫布操作

現在有乙個場景是需要進入到 canvas畫布中 進行單擊操作,現在使用過如下方法 canvas driver.find element by xpath canvas id canvas actions.move to element canvas move by offset 600,270 cl...