zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Max History CodeForces
    Buy a Ticket CodeForces
    AC日记——字符串的展开 openjudge 1.7 35
    AC日记——回文子串 openjudge 1.7 34
    AC日记——判断字符串是否为回文 openjudge 1.7 33
    AC日记——行程长度编码 openjudge 1.7 32
    AC日记——字符串P型编码 openjudge 1.7 31
    AC日记——字符环 openjudge 1.7 30
    AC日记——ISBN号码 openjudge 1.7 29
    AC日记——单词倒排 1.7 28
  • 原文地址:https://www.cnblogs.com/maoxianfei/p/9775926.html
Copyright © 2011-2022 走看看