• Selenium


    1. 对话框操作

    1.1 alter 提示对话框

    # 定位按钮
    driver.find_element_by_id("button1").click()
    time.sleep(2)
    # 要从网页上 切换到 对话框上
    txt = driver.switch_to.alert.text
    print(txt)
    time.sleep(2)
    # 点击对话框的确认按钮
    driver.switch_to.alert.accept()
    

    1.2 取消

    # 定位按钮
    driver.find_element_by_id("button1").click()
    time.sleep(2)
    # 要从网页上 切换到 对话框上
    txt = driver.switch_to.alert.text
    print(txt)
    time.sleep(2)
    # 点击对话框的取消按钮
    driver.switch_to.alert.dismiss()
    

    注:确认对话框多了一个取消按钮dismiss()

    1.3 对话框处理

    # 1.网页中常用的弹出框有三种 
    	(1).alert: 警告框 
    	(2).confirm: 确认框 
    	(3).prompt: 提示框
    
    # 2.弹出框的处理
    	遇到弹出框, 需要从原有页面切换至弹出上, 再进行操作.
        
    # 3.常用方法:
        obj.text  # 获取弹出框文本
        obj.accept()  # 确定
        obj.dismiss()  # 取消
    

    2. frame嵌套

    默认我们可以在一个页面中 展示另外一个页面的内容,这个需要借助于框架标签iframe 来实现

    <body>
    	<h1>主页</h1>
    	<div>
    		<iframe src="index.html"></iframe>
    	</div>
    	<div>
    		<iframe src="news.html"></iframe>
    	</div>
    </body>
    

    主页中就展示了两个其他的页面,一个是首页、一个是新闻页

    这个时候吗,如果我们想直接定位 首页中的 元素是拿不到的。

    如何拿到呢?

    driver.get("http://127.0.0.1:8020/Day01/home.html")
    
    # 切换到某个frame中  这里切换可以根据 下标 id name等等
    driver.switch_to.frame(0)
    
    # 我们切换到frame这个框架 后 就可以直接 通过driver来定位 该frame中的元素
    driver.find_element_by_id("username").send_keys("张三")
    

    2.1 从主页 切换到子页1

    driver.get("http://127.0.0.1:8020/Day01/home.html")
    
    driver.switch_to.frame("iframe1")
    
    # 我们切换到frame这个框架 后 就可以直接 通过driver来定位 该frame中的元素
    driver.find_element_by_id("username").send_keys("张三")
    

    2.2 从子页1切到子页2

    默认是不能从一个子页 切换到另外一个子页的,需要先从子页退出到主页,在从主页切换到其他子页

    # 退出 frame 回到主页
    driver.switch_to.default_content()
    # 切换到第2个子页
    driver.switch_to.frame("iframe2")
    t = driver.find_element_by_id("h11").text
    print(t)
    

    3. 窗口切换

    3.1. 介绍

    我们一个浏览器 可以有多个窗口,我们可以实现多window窗口切换。

    我们的每一个窗口都有一个唯一的标识,可以通过标识来找到该窗口。

    我们称这个标识为 句柄。

    常用方法:

    (1).说明:在Selenium中封装了获取当前窗口句柄、获取所有窗口句柄和切换到指定句柄窗口的方法; 句柄:英文handle,窗口的唯一识别码
    (2).实现方法:
    	1).driver.current_window_handle  ---> 获取当前窗口句柄
    	2).driver.window_handles  ---> 获取所有窗口句柄 
            3).driver.switch_to.window(handle)  ---> 切换指定句柄窗口
    

    3.2.案例

    如果我们从窗口1 超链接打开了窗口2

    则句柄默认不会自动切换到窗口2,需要我们手动切换

    # 定位北京超链接
    driver.find_element_by_id("beijing").click()
    # 切换句柄 到 我们的beijing窗口
    driver.switch_to.window(driver.window_handles[1])
    

    同意道理,从窗口2 打开了窗口3 ,则句柄也要响应的代码切换

    driver.find_element_by_id("baidu").click()
    # 切换到 百度窗口
    driver.switch_to.window(driver.window_handles[2])
    

    4.下拉框

    4.1 下拉框处理

    # 1.操作方法: 
    	(1).select_by_index(index) --> 根据option索引来定位,从0开始 
    	(2).select_by_value(value) --> 根据option属性value值来定位 
    	(3).select_by_visible_text(text) --> 根据option显示文本来定位 
    
    # 2.示例代码:
    # 导包 
    from selenium.webdriver.support.select import Select 
    # 实例化对象
    select = Select(driver.find_element_by_id("selectA")) select.select_by_index(2) # 根据索引实现 
    select.select_by_value("sh") # 根据value属性实现 
    select.select_by_visible_text("A北京") # 根据文本内容实现
    

    5. 滚动条处理

    # 1.为什么要学习滚动条操作?
    	(1).在HTML页面中,由于前端技术框架的原因,页面元素为动态显示,元素根据滚动条的下拉而被加载
    	(2).页面注册同意条款,需要滚动条到最底层,才能点击同意
    
    # 2.实现方式
    (1).说明:selenium中并没有直接提供操作滚动条的方法,但是它提供了可执行JavaScript脚本
    的方法,所以我们可以通过JavaScript脚本来达到操作滚动条的目的。
    (2).设置JavaScript脚本控制滚动条 
    	js = "window.scrollTo(0,1000)" 
    	(0:左边距;1000:上边距;单位像素) 
    
  • 相关阅读:
    青蛙的约会
    租用游艇问题
    宾馆房间
    [USACO10FEB]购买巧克力Chocolate Buying
    骑士的工作
    Power Strings
    [HAOI2006]聪明的猴子
    骑马修栅栏 Riding the Fences
    [USACO06JAN]牛的舞会The Cow Prom
    UVA 11294 wedding 2-sat
  • 原文地址:https://www.cnblogs.com/yimeng123/p/15264764.html
Copyright © 2020-2023  润新知