zoukankan      html  css  js  c++  java
  • selenium

    原文地址:https://blog.csdn.net/xiaoxiaochunmei/article/details/89226424

    调用chromeOptions

    from selenium import webdriver
    options = webdriver.ChromeOptions()
    ......
    browser = webdriver.Chrome(chrome_options=option)

    去掉提示“正在受到自动测试软件的控制”

    option.add_argument('disable-infobars')

    设置窗口大小

    option.add_argument('--window-size=1366,768')
    或者
    browser.set_window_size(480, 800)  #移动端大小

    最大化运行

    browser.maximize_window()
    or
    option.add_argument('--start-maximized')

    设置编码格式

    option.add_argument('lang=zh_CN.UTF-8')

    设置UA请求头

    option.add_argument('User-Agent=Mozilla/5.0')

    无界面浏览器

    option.add_argument('--headless')

    禁止加载图片

    my_prefs = {"profile.managed_default_cotent_settings.images": 2}
    option.add_experimental_option("prefs", my_prefs)

    IP代理

    # 设置无账号密码的代理
    option.add_argument('--proxy-server=http://ip:port')
    # 设置有账号密码的代理,需要其他插件

    关闭是否保存密码的提示框

    prefs = {}
    prefs['credentials_enable_service'] = False
    prefs['profile.password_manager_enabled'] = False
    option.add_experimental_option("prefs", prefs)

    指定浏览器的分辨率

    option.add_argument('window-size=1920 × 3000')
    或者
    browser.set_window_size(480, 480)

    手动指定浏览器的位置

    option.binary_location = r'绝对路径chrome.exe'

    浏览器

    # 浏览器刷新
    browser.refresh()
    
    # 浏览器后退
    browser.back()
    
    # 浏览器前进
    browser.forward()

    拖动滑动条

    js =  "var q=document.documentElement.scrollTop=1000000"
    
    or
    js = "window.scrollTo(0,document.body.scrollHeight)"  # window.scrollTo(x,y)
    browser.execute_script(js)
    
    or
    browser.execute_script("window.scrollTo(document.body.scrollHeight,0)")
    
    or
    #获取焦点
    target = browser.find_element_by_class_name('top-div')
    b.execute_script("arguments[0].focus();", target)
    
    or
    #拖动到可见的元素去
    target = browser.find_element_by_id('1')
    browser.execute_script("arguments[0].scrollIntoView();", target)

    frame标签

    # frame标签有三种:frameset、frame、iframe。其中frameset是普通标签,无需切换;frame需要层层切进去。
    
    1. 切换到frame中:switch_to.frame(fererence)
    
       参数可以是:id、name、index以及webElement对象
    
    2.切换回主文档:switch_to.default_content()
    
       嵌套frame的操作:switch_to.parent_frame() 从子frame切换到父frame

    多窗口切换

    # WebDriver提供switch_to.window()方法实现不同窗口间的切换
    
    1. current_window_handle:获得当前窗口句柄
    
    2. window_handles:返回所有窗口的句柄到当前会话
    
    3. switch_to.window():切换到相应的窗口
    
    # 获得当前所有打开的窗口句柄
    all_handles = browser.window_handles
    # 获得当前窗口句柄
    curr_window = browser.current_window_handle

    告警框处理

    # JS生成的告警框类型有:alert、confirm、prompt。处理告警框首先使用switch_to.alert()方法定位,然后使用text、accept、dismiss、send_keys等进行操作。
    
    text:返回告警框中的文字信息
    
    accept():接受现有告警框
    
    dismiss():解散现有告警框
    
    send_keys():在告警框中输入文本

    执行js

    # 将不可见元素改为可见的
    
    from selenium.webdriver.common.action_chains import ActionChains as ac
    
    # 执行js修改属性
    
    js = "document.getElementById('licensemg').style.display='block'"
    browser.execute_script(js)
    
    # 将光标悬停在元素上进行下一步的操作
    
    ele = browser.find_element_by_id('licensemenu')
    ac(browser).move_to_element(ele).perform()

    下拉菜单

    select有两种模式:单选和多选,功能有:取消选中option、选中option、判断是否是多选模式、获取option。
    其中,取消选中仅对多选模式有效;其他方法单选多选均有效。

    • 定位下拉菜单控件
      from selenium.webdriver.support.select import Select
      
      # 定位下拉菜单的控件位置
      div_select = Select(browser.find_element_by_id('select_id'))
    • 选中option
      #通过文本值定位
      div_select.select_by_visible_text('option_text')
      
      # 通过索引定位(索引从0开始)
      div_select.select_by_index(index)
      
      # 通过value值定位
      div_select.select_by_value(select_value)
    • 取消选中option
      仅对多选模式有效,否则报异常
      # 取消所有选择项
      div_select.deselect_all()
      
      # 取消指定index的选择
      div_select.deselect_by_index(index)
      
      # 取消指定value值的选择
      div_select.deselect_by_value(value)
      
      # 取消指定文字项的选择(单选模式无效,但不会报异常)
      div_select.deselect_by_visible_text(text)
    • 判断是否是多选
      返回boolean
      div_select.is_multiple()
    • 获取option
      # 返回所有的option(没有option时,会返回空列表,不报异常)
      div_select.options()
      
      # 返回所有已选中的option(没有option被选中,会返回空列表,不报异常)
      div_select.all_selected_options()
      
      # 返回选中的第一个option(没有option被选中,会报异常)
      div_select.first_selected_option()

    单选按钮和复选框

    一般情况下,这两种标签都是input标签,可以通过点击的方式进行选中。
    可按照一般元素进行定位。
    
    Checkbox:
    <input type=“checkbox” value=“cv1” name=“c1”>
    <input type=“checkbox” value=“cv2”>
    Radio:
    <input type=“radio” value=“rv1” name=“r1”>
    <input type=“radio” value=“rv2” name=“r1”>
    
    判断是否被选中:
    div.is_selected(),返回boolean

     

        

  • 相关阅读:
    Python 创建包含列表的元组
    Python 创建特殊元组tuple
    Bean named 'XXX' is expected to be of type [XXX] but was actually of type [com.sun.proxy.$Proxy7
    小米手机安装Google框架
    前端框架
    Microsoft Project项目管理工具
    Spring AOP无法拦截Controller的原因
    sql分页优化
    npm和Node.js简介
    启动OpenOffice服务
  • 原文地址:https://www.cnblogs.com/wtil/p/12286800.html
Copyright © 2011-2022 走看看