美文网首页
Selenium-webdriver Chrome实战

Selenium-webdriver Chrome实战

作者: 敦敦实实 | 来源:发表于2018-06-29 10:13 被阅读0次

    Selenium是一个浏览器自动化操作框架。Selenium主要由三种工具组成。第一个工具SeleniumIDE,是Firefox的扩展插件,支持用户录制和回访测试。录制/回访模式存在局限性,对许多用户来说并不适合,因此第二个工具——Selenium WebDriver提供了各种语言环境的API来支持更多控制权和编写符合标准软件开发实践的应用程序。最后一个工具——SeleniumGrid帮助工程师使用Selenium API控制分布在一系列机器上的浏览器实例,支持并发运行更多测试。在项目内部,它们分别被称为“IDE”、“WebDriver”和“Grid”。

    WebDriver针对各个浏览器而开发,取代了嵌入到被测Web应用中的JavaScript。与浏览器的紧密集成支持创建更高级的测试,避免了JavaScript安全模型导致的限制。除了来自浏览器厂商的支持,WebDriver还利用操作系统级的调用模拟用户输入。WebDriver支持Firefox(FirefoxDriver)、IE (InternetExplorerDriver)、Opera (OperaDriver)和Chrome (ChromeDriver)。 它还支持Android (AndroidDriver)和iPhone (IPhoneDriver)的移动应用测试。它还包括一个基于HtmlUnit的无界面实现,称为HtmlUnitDriver。WebDriver API可以通过Python、Ruby、Java和C#访问,支持开发人员使用他们偏爱的编程语言来创建测试。

    1、引入Webdriver

    from selenium import webdriver
    

    2、声明chrome浏览器

    driver = webdriver.Chrome()
    

    3、用get方法打开百度首页

    driver.get("http://www.baidu.com")
    

    此时会模拟一个浏览器打开网址
    注意 http:// 要加上


    image.png

    4、打印网站源代码

    print(driver.page_source)
    

    5、关闭浏览器

    driver.close()
    

    在打开浏览器与关闭浏览器之间我们就可以进行一系列操作

    6、查找页面元素 的方法

    查找页面上唯一的元素
    find_element_by_name
    find_element_by_id
    find_element_by_xpath
    find_element_by_link_text
    find_element_by_partial_link_text
    find_element_by_tag_name
    find_element_by_class_name
    find_element_by_css_selector
    查找页面上重复的元素
    find_elements_by_name
    find_elements_by_id
    find_elements_by_xpath
    find_elements_by_link_text
    find_elements_by_partial_link_text
    find_elements_by_tag_name
    find_elements_by_class_name
    find_elements_by_css_selector
    

    7、可以引入

    from selenium.webdriver.common.by import By
    然后就可以
    input_first = driver.find_element(By.ID,"q")
    

    8、延时操作

    引入 time

    import time
    
    time.sleep(秒)
    

    9、执行JavaScript

    driver.execute_script('alert("hellow word")')
    

    10、获取元素属性

    获取到页面节点后
    节点.get_attribute('class')
    

    11、等待时间

    引入 WebDriverWait

    from selenium.webdriver.support.ui import WebDriverWait
    
    wait = WebDriverWait(driver, 10)
    

    12、判断节点是否可以点击/是否出现该元素

    引入 EC
    from selenium.webdriver.support import expected_conditions as EC
    EC.element_to_be_clickable() 是否能点击
    EC.presence_of_element_located() 是否出现
    

    13、常用判断条件

    title_is 标题是某内容
    title_contains 标题包含某内容
    presence_of_element_located 元素加载出,传入定位元组,如(By.ID, 'p')
    visibility_of_element_located 元素可见,传入定位元组
    visibility_of 可见,传入元素对象
    presence_of_all_elements_located 所有元素加载出
    text_to_be_present_in_element 某个元素文本包含某文字
    text_to_be_present_in_element_value 某个元素值包含某文字
    frame_to_be_available_and_switch_to_it frame加载并切换
    invisibility_of_element_located 元素不可见
    element_to_be_clickable 元素可点击
    staleness_of 判断一个元素是否仍在DOM,可判断页面是否已经刷新
    element_to_be_selected 元素可选择,传元素对象
    element_located_to_be_selected 元素可选择,传入定位元组
    element_selection_state_to_be 传入元素对象以及状态,相等返回True,否则返回False
    element_located_selection_state_to_be 传入定位元组以及状态,相等返回True,否则返回False
    alert_is_present 是否出现Alert
    

    14、浏览器前进后退

    back()
    forward()
    

    15、cookie操作

    get_cookies()
    driver.add_cookie({'name': 'name', 'domain': 'www.zhihu.com', 'value': 'zhaofan'})
    delete_all_cookes()
    add_cookie()
    

    16、选项卡操作

    可以使用js开打开新的选项卡

    driver.execute_script('window.open()')
    不同的选项卡存放在:driver.window_handles 中
    使用:driver.window_handles[0]就可以操作第一个选项卡
    

    17、异常处理

    比如 节点不存在等异常访问超时
    官网:http://selenium-python.readthedocs.io/api.html#module-selenium.common.exceptions

    1、节点不存在
    try: 正常执行代码
        browser.find_element_by_id('hello')
    except NoSuchElementException:没有节点是执行
        print('No Element')
    finally:不管是否错误最后都会执行
        browser.close()
    2、访问超时
    try:
        browser.get('https://www.baidu.com')
    except TimeoutException: 超时时执行
        print('Time Out')
    

    相关文章

      网友评论

          本文标题:Selenium-webdriver Chrome实战

          本文链接:https://www.haomeiwen.com/subject/zhmoyftx.html