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

2022-07-27 19:00:21 字數 1617 閱讀 1663

在web自動化中,我們會遇到日曆控制這種場景,大致分為兩種。

1.可以直接輸入日期;

2.不能夠直接輸入日期,只能選擇。

對於可以直接輸入日期的我們可以用webdriver 去設定日期,流程為:

1. 定位到該日期輸入的input

2. 直接使用sendkeys 方法 ,輸入正確格式的日期

示例**如下:

driver.find_element_by_xpath("///input[@name="phone" and @datatype="m"]")).sendkeys("2020-03-13")

但是,有的日期控制項是readonly的

比如12306的這個

這個時候,沒法呼叫webelement的sendkeys()

方法1:

1. 定位到該日期輸入的input

2.使用js remove readonly attribute,然後使用sendkeys 方法 ,輸入正確格式的日期

#去掉唯讀屬性

js_pha='document.getelementbyid("train_datte").readonly=false'#或js_pha='document.getelementbyid("train_datte").removeattribute(\"readonly\")'

driver.excute_script(js_pha)

#或者:driver.execute_script('arguments[0].removeattribute(\"readonly\")',driver.find_element_by_id("train_date"))

#清除原來的內容並寫入日期 

driver.find_element_by_id("train_date").clear() driver.find_element_by_id("train_date").sendkeys("2020-03-13")

方法2:

1. 定位到該日期輸入的input

2.使用js remove readonly attribute,然後使用js修改日期

#去掉唯讀屬性

js_pha='document.getelementbyid("train_datte").readonly=false'#或js_pha='document.getelementbyid("train_datte").removeattribute(\"readonly\")'

driver.excute_script(js_pha)

#或者:driver.execute_script('arguments[0].removeattribute(\"readonly\")',driver.find_element_by_id("train_date"))

#直接通過js語句來修改日期

driver.execute_script('document.getelementbyid("train_date").value=2020-3-13')

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

selenium並不是萬能的,有時候頁面上操作無法實現的,這時候就需要借助js來完成了。常見場景 當頁面上的元素超過一屏後,想操作螢幕下方的元素,是不能直接定位到,會報元素不可見的。這時候需要借助滾動條來拖動螢幕,使被操作的元素顯示在當前的螢幕上。滾動條是無法直接用定位工具來定位的。selenium...

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...