004 selenium 視窗/下拉框/alert
阿新 • • 發佈:2018-12-04
''' 時間:2018/12/04 功能:視窗/下拉框/alert 目錄: 一: 視窗 1 切換視窗 2 關閉視窗 二: 下拉框 1 xpath 2 select 三: alert 1 百度儲存 2 三種處理 四: 未解決 1 下拉框 '''
一: 視窗
1 切換視窗
from selenium import webdriver import time driver= webdriver.Firefox() driver.get("https://www.hao123.com") # 獲取控制代碼 - 當前視窗 time.sleep(2) cur_handle = driver.current_window_handle print(cur_handle) driver.find_element_by_link_text("人民網").click() # 獲取控制代碼 - 所有視窗 time.sleep(2) all_handle = driver.window_handles print(all_handle) # 獲取控制代碼 - 最新視窗 new = all_handle[-1] driver.switch_to.window(new)print(driver.title) # 切換視窗 - 開始視窗 driver.switch_to.window(all_handle[0]) print(driver.title)
2 關閉視窗
from selenium import webdriver import time driver = webdriver.Firefox() driver.get("https://www.hao123.com") # 獲取控制代碼 - 當前視窗 time.sleep(2) cur_handle = driver.current_window_handle print(cur_handle) # 隱式等待 : 當前頁面 - 全域性有效 driver.implicitly_wait(5) driver.find_element_by_link_text("人民網").click() # 獲取控制代碼 - 所有視窗 time.sleep(2) all_handle = driver.window_handles print(all_handle) # 獲取控制代碼 - 最新視窗 new = all_handle[-1] driver.switch_to.window(new) print(driver.title) # 切換視窗 - 開始視窗 driver.switch_to.window(all_handle[0]) print(driver.title) # 關閉視窗 - 起始視窗 driver.close() # 關閉視窗 - 最新視窗 driver.switch_to.window(all_handle[-1]) driver.close()
二: 下拉框
1 xpath
1 : 定位百度的搜尋設定,頁面顯示條數。
1 : 先使用搜狗瀏覽器自帶工具,進行定位測試。
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import time driver = webdriver.Firefox() driver.get("https://www.baidu.com") time.sleep(1) # 定位元素 - 搜尋設定 driver.implicitly_wait(5) # 隱式等待 : 當前頁面 - 全域性有效 mouse = driver.find_element_by_link_text("設定") ActionChains(driver).move_to_element(mouse).perform() driver.find_element_by_link_text("搜尋設定").click() time.sleep(1) # 定位元素 - 每頁顯示 driver.find_element_by_id("nr").click() time.sleep(2) driver.find_element_by_xpath(".//*[@id='nr']/option[3]").click()
2 select
1 : 檢視原始碼 select.py。
1 : 檢視原始碼的定位方法。
三種方法
select_by_value
select_by_index
select_by_visible_text
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.ui import Select import time driver = webdriver.Firefox() driver.get("https://www.baidu.com") time.sleep(1) # 定位元素 - 搜尋設定 driver.implicitly_wait(5) # 隱式等待 : 當前頁面 - 全域性有效 mouse = driver.find_element_by_link_text("設定") ActionChains(driver).move_to_element(mouse).perform() driver.find_element_by_link_text("搜尋設定").click() time.sleep(1) # 定位元素 - select_by_index element = driver.find_element_by_id("nr") Select(element).select_by_index(2) element.click() # 定位元素 - select_by_value element = driver.find_element_by_id("nr") Select(element).select_by_value("50") element.click() # 定位元素 - select_by_value element = driver.find_element_by_id("nr") Select(element).select_by_visible_text("每頁顯示50條") element.click()
三: alert
1 百度儲存
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.ui import Select import time driver = webdriver.Firefox() driver.get("https://www.baidu.com") time.sleep(1) # 定位元素 - 搜尋設定 driver.implicitly_wait(5) # 隱式等待 : 當前頁面 - 全域性有效 mouse = driver.find_element_by_link_text("設定") ActionChains(driver).move_to_element(mouse).perform() driver.find_element_by_link_text("搜尋設定").click() time.sleep(1) # 定位元素 - select_by_value element = driver.find_element_by_id("nr") Select(element).select_by_visible_text("每頁顯示50條") element.click() # 儲存設定 driver.find_element_by_xpath(".//*[@id='gxszButton']/a[1]").click() time.sleep(0.5) # alert彈窗 alert = driver.switch_to.alert # 切換視窗 - alert print(alert.text) # 列印文字 alert.accept() # 點選確定
2 三種處理
<html> <head> <title>Alert</title> </head> <body> <input id = "alert" value = "alert" type = "button" onclick = "alert('這個叫alert');"/> <input id = "confirm" value = "confirm" type = "button" onclick = "confirm('這個叫confirm');"/> <input id = "prompt" value = "prompt" type = "button" onclick = "var name = prompt('這個叫prompt'); document.write(name) "/> <iframe id = "iframe12" <input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd">按鈕 </iframe> </body> </html>
1 : 儲存到桌面,命名為 alert.html。
from selenium import webdriver import time driver = webdriver.Firefox() driver.get("file:///C:/Users/Administrator/Desktop/alert.html") time.sleep(1) # 定位元素 - alert driver.find_element_by_xpath(".//*[@id='alert']").click() time.sleep(0.5) # alert彈窗 alert = driver.switch_to.alert # 切換視窗 - alert print(alert.text) # 列印文字 alert.accept() # 點選確定 # 定位元素 - confirm driver.find_element_by_xpath(".//*[@id='confirm']").click() time.sleep(0.5) # alert彈窗 alert = driver.switch_to.alert # 切換視窗 - alert time.sleep(0.5) print(alert.text) # 列印文字 time.sleep(1) alert.dismiss() # 點選取消 # 定位元素 - confirm driver.find_element_by_xpath(".//*[@id='prompt']").click() time.sleep(0.5) # alert彈窗 alert = driver.switch_to.alert # 切換視窗 - alert print(alert.text) # 列印文字 alert.send_keys("test") # 輸入內容 alert.accept() # 點選確定
1 : 分別對三種不同的結果進行處理。
四: 未解決
1 下拉框
使用xpath定位,百度搜索-顯示頁面條數的下拉框,下拉框不自動縮回。
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import time driver = webdriver.Firefox() driver.get("https://www.baidu.com") time.sleep(1) # 定位元素 - 搜尋設定 driver.implicitly_wait(5) # 隱式等待 : 當前頁面 - 全域性有效 mouse = driver.find_element_by_link_text("設定") ActionChains(driver).move_to_element(mouse).perform() driver.find_element_by_link_text("搜尋設定").click() time.sleep(1) # 定位元素 - 每頁顯示 driver.find_element_by_id("nr").click() time.sleep(2) driver.find_element_by_xpath(".//*[@id='nr']/option[3]").click()
''' 原因 硬體 系統(版本、位數) 瀏覽器(品牌、版本、位數) selenium(版本) pycharm(品牌、版本、位數) '''