zoukankan      html  css  js  c++  java
  • Selenium 窗口和frame定位

    应用背景

    selenium可以自由切换浏览器选项卡、处理浏览器弹窗、frame切换。

    选项卡管理

    import time
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    
    driver.get("https://www.baidu.com")
    print(driver.window_handles)
    #['CDwindow-7D823685B95557598E6B89340A0CCFBB']
    #打开新的浏览页
    driver.execute_script("window.open()")
    #输出当前页面所有的句柄
    print(driver.window_handles)
    # ['CDwindow-7D823685B95557598E6B89340A0CCFBB','CDwindow-1241630F7AD717D99DE97C39B2E68D73']
    driver.switch_to.window(driver.window_handles[0])
    driver.get("https://www.taobao.com")
    time.sleep(1)
    
    driver.switch_to.window(driver.window_handles[1])
    driver.get("https://jd.com")
    time.sleep(1)

    frame页面定位

    案例:在Frame.html文件种定位搜狗搜索页面,进行搜索操作。

    <html>
    <head>
    <title>Frame_test</title>
    </head>
    <body>
        <div>
        <iframe id="search" src="http://www.sogou.com" width="800" height="500">
        </div>
    </body>
    </html>
    from selenium import webdriver
    from time import sleep
    
    driver=webdriver.Chrome()
    
    file_path='file:///D:/Users/xxxx/Desktop/test11.html'
    driver.get(file_path)
    #切换到 frame 页面内
    driver.switch_to.frame("search")
    #driver.switch_to.frame(0) # 1.用frame的index来定位,第一个是0
    #driver.switch_to.frame(driver.find_element_by_tag_name("iframe")) # 用WebElement对象定位
    #定位到搜索框按钮输入关键词
    driver.find_element_by_css_selector("#query").send_keys("python")
    sleep(2)
    driver.find_element_by_css_selector("#stb").click()
    # driver.switch_to.default_content() #切回主文档
    # driver.switch_to.parent_frame()  #切换夫文档
    sleep(2)
    driver.quit()

     切换弹窗

    定位到alert弹窗,返回一个弹窗的对象

    from selenium import webdriver
    from selenium.webdriver import ActionChains
    import time
    
    driver = webdriver.Chrome()
    
    driver.get("http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")
    driver.maximize_window()
    
    driver.switch_to.frame('iframeResult')
    source = driver.find_element_by_id('draggable')
    target = driver.find_element_by_id('droppable')
    
    actions = ActionChains(driver)
    actions.drag_and_drop(source, target)
    #拖拽
    actions.perform()
    #浏览器提示框处理
    alert = driver.switch_to.alert
    # 获取弹窗内的文本
    print(alert.text)
    #alert.accept() # 对弹窗对象的确定操作。返回原来的页面
    time.sleep(3)
    alert.dismiss() # 对弹窗对象的取消操作。返回原来的页面
    time.sleep(5)
    driver.quit()
  • 相关阅读:
    扩展一些std::string未提供的常用方法
    Qt子线程中显示窗口部件的一个方法
    Qt子线程中通过QMetaObject::invokeMethod刷新UI控件
    “我的一剂良药”之开源指北
    源码解析之 Mybatis 对 Integer 参数做了什么手脚?
    必知必会面试题之 Spring 基础
    从一部电影史上的趣事了解 Spring 中的循环依赖问题
    Mysql、Oracle、SQL-Server 查询字段值长度
    Cross-Origin Read Blocking (CORB) blocked cross-origin response 问题
    MacOS11.0-brew 卡在Updating Homebrew
  • 原文地址:https://www.cnblogs.com/watery/p/13873814.html
Copyright © 2011-2022 走看看