• selenium3+python自动化2-浏览器基本操作(窗口切换、前进/后退、截屏)


    一、多个窗口的切换

    以百度为例:打开百度是一个窗口,点击登录》立即注册,就会打开第二个窗口,如何让两个窗口进行切换?

    先获取当前打开所有窗口的handles,用到handles=driver.window_handles,此时handles是列表格式

    再使用索引,切换到指定的窗口用到driver.switch_to.windows(handles[索引值]),索引值从0开始计算

    from selenium import webdriver
    from time import sleep
    driver=webdriver.Chrome()
    driver.get('https://www.baidu.com/')
    sleep(1)
    #切换窗口
    driver.find_element_by_link_text('登录').click()
    sleep(2)
    driver.find_element_by_link_text('立即注册').click()
    sleep(2)
    handles=driver.window_handles
    # print(type(handle),len(handle))
    # driver.switch_to_window(handle[1])此方法不适用
    driver.switch_to.window(handles[0])#切换窗口
    sleep(1)
    driver.quit()

    二、自己将8种定位方法函数化与By模块的比较

    #自己定义的函数
    def findElement(driver,key,value):
        if key=="id":#通过id定位
            element=driver.find_element_by_id(value)
        if key=="calss_name":#通过class定位
            element = driver.find_element_by_calss_name(value)
        if key=="name":#通过name定位
            element = driver.find_element_by_name(value)
        if key=="tag_name":#通过tag定位
            element = driver.find_element_by_tag_name(value)
        if key=="link_text":#通过link定位
            element = driver.find_element_by_link_text(value)
        if key=="xpath":#xpath路径定位
            element = driver.find_element_by_xpath(value)
        if key=="css_selector":#通过css定位
            element = driver.find_element_by_css_selector(value)
        return element
    #By和自己写的元素定位方法的区别
    from selenium.webdriver.common.by import By
    element=driver.find_element(By.ID,'kw')#每次都要重复写driver.find_element(...)
    element.send_keys("杨迅")
    
    # from ANN.common_model import *
    # element1=findElement(driver,"id","kw")#直接调用函数,简单
    # element1.send_keys("yang")

    三、浏览器其他的操作,设置窗口大小,前进后退,截屏,直接见代码

    from selenium import webdriver
    from time import sleep
    driver=webdriver.Chrome()
    driver.get('https://www.baidu.com/')
    sleep(2)
    # #浏览器返回上一页
    # driver.back()
    # sleep(3)
    # #浏览器切换到下一页
    # driver.forward()
    # sleep(2)
    # #设置窗口大小
    # driver.set_window_size(540,960)
    # sleep(1)
    # driver.maximize_window()
    # sleep(2)
    # #截屏
    # driver.get_screenshot_as_file(r'F:截图2.png')
  • 相关阅读:
    形态学权重图像去噪
    druid配置
    @mapper个人理解
    mybatis自动生成的bean接口在service层找不到
    type-aliases-package的作用
    windows查询端口是否被占用
    idea中使用lombok注解无效
    springboot+dubbo问题记录
    springboot跳转到其他controller
    BigDecimal做减法计算
  • 原文地址:https://www.cnblogs.com/xiaobeibi/p/12188557.html
Copyright © 2020-2023  润新知