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(品牌、版本、位数)
'''

 

posted @ 2018-12-04 01:18  火焰马  阅读(334)  评论(0编辑  收藏  举报