• selenium 自动化测试初探(PC——chrome)


    一、环境准备:

    LINUX 安装chrome for linux

    官网chrome版本地址:https://www.google.cn/intl/zh-CN_ALL/chrome/

    驱动下载   https://npm.taobao.org/mirrors/chromedriver 

    yum安装方式

    firefox(火狐) 
    sudo yum install firefox

    chrome(谷歌) 
    添加源:sudo wget http://repo.fdzh.org/chrome/google-chrome-mirrors.repo -P /etc/yum.repos.d/
    安装:sudo yum install google-chrome-stable

    查看chromedriver版本

    chromedriver --version

    ChromeDriver 70.0.3538.97

    查看chrome版本

    yum list installed|grep chrom

    google-chrome-stable.x86_64       70.0.3538.77-1

    from selenium import webdriver
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument("--no-sandbox")
    chrome_options.add_argument('--headless')
    #chrome_options.add_argument('--disable-dev-shm-usage')
    
    driver=webdriver.Chrome(chrome_options=chrome_options)
    driver.get('https://www.baidu.com')
    title=driver.title
    print(title)
    driver.quit()

    报错提示:(unknown error: DevToolsActivePort file doesn't exist)

    添加代码

    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument("--no-sandbox")
    chrome_options.add_argument('--headless')

    WIN

    windows10 python3 selenium

    pip install selenium

    chrome 驱动下载根据浏览器版本选择 https://npm.taobao.org/mirrors/chromedriver 

    ChromeDriver v2.42 (2018-09-13)----------Supports Chrome v68-70
    ChromeDriver v2.41 (2018-07-27)----------Supports Chrome v67-69
    ChromeDriver v2.40 (2018-06-07)----------Supports Chrome v66-68
    ChromeDriver v2.39 (2018-05-30)----------Supports Chrome v66-68
    ChromeDriver v2.38 (2018-04-17)----------Supports Chrome v65-67
    ChromeDriver v2.37 (2018-03-16)----------Supports Chrome v64-66
    ChromeDriver v2.36 (2018-03-02)----------Supports Chrome v63-65
    ChromeDriver v2.35 (2018-01-10)----------Supports Chrome v62-64

    二、相关方法

    单个元素定位方法

    • find_element_by_id()
    • find_element_by_name()
    • find_element_by_class_name()
    • find_element_by_tag_name()
    • find_element_by_link_text()
    • find_element_by_partial_link_text()
    • find_element_by_xpath()
    • find_element_by_css_selector()

    多个元素定位:

    • find_elements_by_id()
    • find_elements_by_name()
    • find_elements_by_class_name()
    • find_elements_by_tag_name()
    • find_elements_by_link_text()
    • find_elements_by_partial_link_text()
    • find_elements_by_xpath()
    • find_elements_by_css_selector()

    driver.refresh() 刷新

    clear(): 清除文本。

    send_keys (value): 模拟按键输入。

    click(): 单击元素。

    submit() 提交

    窗口切换

    • current_window_handle:获得当前窗口句柄。
    • window_handles:返回所有窗口的句柄到当前会话。
    • switch_to.window():用于切换到相应的窗口,与上一节的switch_to.frame()类似,前者用于不同窗口的切换,后者用于不同表单之间的切换

    三、例子解析

    例子1:登陆v2ex 网站,验证码问题需解决

    #coding:utf-8
    from selenium import webdriver
    driver=webdriver.Chrome()
    driver.get('https://www.v2ex.com/')
    driver.find_element_by_link_text("登录").click()
    username=driver.find_element_by_css_selector("#Main > div.box > div.cell > form > table > tbody > tr:nth-child(1) > td:nth-child(2) > input")
    username.send_keys('test')
    passwd=driver.find_element_by_css_selector("#Main > div.box > div.cell > form > table > tbody > tr:nth-child(2) > td:nth-child(2) > input")
    passwd.send_keys('11111')
    captcha=driver.find_element_by_css_selector("#Main > div.box > div.cell > form > table > tbody > tr:nth-child(3) > td:nth-child(2) > input")
    captcha.send_keys('dddd')
    captcha.submit()

    例子2:无验证码登陆

    from selenium import webdriver
    from selenium.webdriver.support.select import Select
    driver=webdriver.Chrome()
    handle_t=driver.current_window_handle
    driver.get('https://www.myoffer.cn')
    # driver.get('https://www.myoffer.cn/account/login?callbackRedirect=%2F')
    
    driver.find_element_by_css_selector("body > header > div > div.my-top > div.li-bt-login > a").click()
    driver.find_element_by_css_selector("#login-enroll-user-select").click()
    driver.find_element_by_css_selector("#login-form-login-btn").click()
    
    driver.find_element_by_css_selector("#login-user").click()
    user=driver.find_element_by_css_selector("#login-user")
    user.send_keys('xxxx')
    passwd=driver.find_element_by_css_selector("#login-password")
    passwd.send_keys('xxxx')
    driver.find_element_by_css_selector("#login-form-login > div.login-form-container > div > div.login-form-1 > div:nth-child(3) > button").click()

     参考:https://blog.csdn.net/zhuyiquan/article/details/79537623

  • 相关阅读:
    脚本输出EBMIDE——断点跟踪输出
    框架配置Winter framework 高效灵活的请求处理框架
    项目经理微软第一份实习
    事件编辑器ScriptCase中的PHP代码编辑器
    命令服务删除virtual bridge
    ajax前台asp.net利用Ajax和Jquery在前台向后台传参数并返回值
    概率数据HDU1203 I NEED A OFFER!(0、1背包)
    控件当前日期android控件之DatePicker和TimePicker
    输入命令xalan初步学习
    函数接口Inside COM读书笔记调度接口与自动化
  • 原文地址:https://www.cnblogs.com/maoxianfei/p/9775926.html
Copyright © 2020-2023  润新知