1. 程式人生 > >004 selenium 視窗/下拉框/alert

004 selenium 視窗/下拉框/alert

 

 

 

'''
時間: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(品牌、版本、位數)
'''