天天看點

python+selenium+new——視窗——網頁——切換視窗——切換frame——alert彈窗

from selenium import webdriver

driver = webdriver.Firefox() # 指定浏覽器驅動 #對象執行個體化

--------------------------------------------------------------------------

url1='https://www.baidu.com' #需要打開的網址

driver.get(url1) #driver.get("https://www.baidu.com")

-----------------------------------------------------------------------------

from time import sleep

sleep(15)

===========================================================================================================================

driver = webdriver.Firefox() # 指定浏覽器驅動 #對象執行個體化

調用說明

driver.屬性值

變量說明:

1.driver.current_url:用于獲得目前頁面的URL

2.driver.title:用于擷取目前頁面的标題

3.driver.page_source:用于擷取頁面html源代碼

4.driver.current_window_handle:用于擷取目前視窗句柄

5.driver.window_handles:用于擷取所有視窗句柄

函數說明:

1.driver.find_element*():定位元素,

2.driver.get(url):浏覽器加載url。 執行個體:driver.get("http//:www.baidu.com")

3.driver.forward():浏覽器向前(點選向前按鈕)。

4.driver.back():浏覽器向後(點選向後按鈕)。

5.driver.refresh():浏覽器重新整理(點選重新整理按鈕)。

6.driver.close():關閉目前視窗,或最後打開的視窗。

7.driver.quit():關閉所有關聯視窗,并且安全關閉session。

8.driver.maximize_window():最大化浏覽器視窗。

9.driver.set_window_size(寬,高):設定浏覽器視窗大小。 driver.set_window_size(400,200) #設定浏覽器的寬度和高度 {'width': 1382, 'height': 744}

10.driver.get_window_size():擷取目前視窗的長和寬。

11.driver.set_window_position(X,Y) #設定浏覽器左上角坐标的X,Y值 driver.set_window_position(100,200) {'x': -8, 'y': -8}

12.driver.get_window_position():擷取目前視窗坐标。

13.driver.get_screenshot_as_file(filename):截取目前視窗。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++切換視窗

14.driver.current_window_handle #擷取目前視窗句柄

15.driver.window_handles #用于擷取所有視窗句柄

--------------------------------------------------------------------------------

suoyou = driver.window_handles # 用于擷取所有視窗句柄

16.driver.switch_to.window(suoyou[0]) #切換到第一個句柄

driver.switch_to.window(suoyou[1]) #切換到第二個句柄

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++切換frame

17.driver.switch_to.frame() #切換frame

18.driver.switch_to.default_content() #切換到首頁面 #從frame中切回主文檔

19.driver.switch_to.parent_frame() #這是switch_to中獨有的方法,可以切換到上一層的frame,對于層層嵌套的frame很有用

#driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0]) #複數,定位一組iframe的第一個

driver.switch_to.frame(driver.find_element_by_tag_name("iframe")) #因為隻有一個iframe,這個也可以用

element = driver.switch_to.active_element 定位到目前聚焦的元素上

ele_box = driver.switch_to.active_element # 通過定位輸目前焦點元素,并再次輸入資料

ele_box.send_keys("12345sdfgh")

driver.switch_to.frame('frame_name') #name來點位

driver.switch_to.frame(1) #id來定位

driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0]) #用webelement對象來定位,先擷取對象

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++alert彈出框

from selenium.webdriver.common.alert import Alert

driver.find_element_by_id('alert_button').click() #點選觸發彈出框alert

alt = Alert(driver)

alt.accept() : 等同于單擊“确認”或者“OK”

alt.dismiss() : 等同于單擊“取消”或者“Cancel”

alt.send_keys() : 發送文本,針對有送出需求的prompt框

alt.text() : 擷取alert文本的内容

alt.authenticate(username,password) : 驗證,針對需要身份驗證的alert

————————————————————————————————————————————————————

首先使用switch_to.alert()方法進行定位,然後可以使用下面的操作

text:傳回alert、confirm、prompt中的文字資訊;

accept():接受現有警告框;

dismiss():解散現有警告框;

send_keys():在警告框中輸入文本(如果可以輸入的話);

20.driver.switch_to.alert.text #擷取alert文本框裡面的文字

21.driver.switch_to.alert.dismiss() #點選取消按鈕

22.driver.switch_to.alert.accept() #點選确定按鈕

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++調用js語句

有些浏覽器的頁面操作,不能依靠WebDriver提供的API來操作,需要借助JavaScript腳本。

webdriver提供了execute_script()方法來執行JavaScript代碼。

23.driver.execute_script(js) #調用/執行js語句的方法。

js = 'window.scrollTo(100,400);' #設定浏覽器視窗滾動條的水牌位置和垂直位置

============================================================================================================================================================

注意:建立檔案夾這個目錄已經存在的前提下:

driver.get_screenshot_as_file('C:\\Users\\del\\Desktop\\建立檔案夾\\'+ picture_time +'.png') #儲存于桌面已經存在的建立檔案夾裡:2020-02-15-19-18-38.png

driver.get_screenshot_as_file('C:\\Users\\del\\Desktop\\建立檔案夾\\'+ picture_time2 +'.png') #日期作為檔案名:2020-02-15.png

driver.get_screenshot_as_file('C:\\Users\\del\\Desktop\\建立檔案夾\\'+ picture_time3 +'.png') #時分秒作為檔案名:19-18-38.png

格式化時間:

import time

picture_time = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime(time.time()))

print(picture_time) # 2020-02-15-19-18-38

#--------------------------------------------------------------------------------

picture_time2 = time.strftime("%Y-%m-%d", time.localtime(time.time()))

print(picture_time2) # 2020-02-15