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()
  • 相关阅读:
    java之SFTP上传下载
    java之FTP上传下载
    JUnit单元测试%MODULE_WORKING_DIR%' does not exist
    MySQL 在线DDL "gh-ost"
    MySQL 主从复制错误1837
    <高性能MySQL> 阅读笔记
    Redis cluster 4.0.9 迁槽不影响读写
    MySQL left join 用法与实例
    Linux 日期 date +%F-%T-%N
    MySQL 使用infobin查找binlog中大事务
  • 原文地址:https://www.cnblogs.com/watery/p/13873814.html
Copyright © 2011-2022 走看看