zoukankan      html  css  js  c++  java
  • Selenium浏览器自动化测试框架

    1.基本使用

    from selenium import webdriver
    
    browser = webdriver.Chrome(executable_path='chromedriver.exe')   # 声明一个浏览器对象   指定使用chromedriver.exe路径
    
    browser.get("https://www.baidu.com")  # 打开Chrome
    input = browser.find_element_by_id("kw")  # 通过id定位到input框
    input.send_keys("python")   # 在输入框内输入python
    
    print(browser.current_url)    # 打印url
    print(browser.get_cookies())  # 打印Cookies
    print(browser.page_source)    # 打印网页源代码
    
    browser.close()               # 关闭浏览器

    2.获取单节点

    from selenium import webdriver
    
    browser = webdriver.Chrome()
    
    browser.get("https://www.taobao.com")
    # 找到搜索框
    input_id = browser.find_element_by_id("q")  # 通过id找
    input_name = browser.find_element_by_name("q")  # 通过name属性值找
    input_css = browser.find_element_by_css_selector("#q") # 根据css选择器找
    input_xpath = browser.find_element_by_xpath('//*[@id="q"]') # 根据xpath找
    print(input_id,input_name,input_css,input_xpath)
    browser.close()
    """
    <selenium.webdriver.remote.webelement.WebElement (session="1dfb3c1ac919b0a5ff778cd3bf6db759", element="84b6d58e-04d6-4483-9a3f-f2e116437075")> 
    <selenium.webdriver.remote.webelement.WebElement (session="1dfb3c1ac919b0a5ff778cd3bf6db759", element="84b6d58e-04d6-4483-9a3f-f2e116437075")> 
    <selenium.webdriver.remote.webelement.WebElement (session="1dfb3c1ac919b0a5ff778cd3bf6db759", element="84b6d58e-04d6-4483-9a3f-f2e116437075")> 
    <selenium.webdriver.remote.webelement.WebElement (session="1dfb3c1ac919b0a5ff778cd3bf6db759", element="84b6d58e-04d6-4483-9a3f-f2e116437075")>
    """
    
    # 其他获取单个节点方法
    """
    find_element_by_link_text
    find_element_by_partial_link_text
    find_element_by_tag_name
    find_element_by_class_name
    """
    # 通过方法
    # find_element(By.ID,"q")   # 参数为查找方式和值

    3.获取多节点

    from selenium import webdriver
    
    browser = webdriver.Chrome()
    
    browser.get("https://www.taobao.com")
    
    lis = browser.find_elements_by_css_selector(".service-bd li")  # 注意是elements多个s
    print(lis)  # 输出为列表
    
    """
    [<selenium.webdriver.remote.webelement.WebElement (session="588f61b0d90f7bf199d3f0ede6f9fb99", element="454d656c-1730-410e-891e-210bfdf0d248")>, <selenium.webdriver.remote.webelement.WebElement (session="588f61b0d90f7bf199d3f0ede6f9fb99", element="119177aa-014a-48c1-8bea-8ca9a50b446e")>, <selenium.webdriver.remote.webelement.WebElement (session="588f61b0d90f7bf199d3f0ede6f9fb99", element="974860cf-1218-4ddf-a745-85f86090e188")>, <selenium.webdriver.remote.webelement.WebElement (session="588f61b0d90f7bf199d3f0ede6f9fb99", element="e5877c0c-f4df-4847-9875-1c81d56f21ee")>]
    """
    
    # 其他获取多个节点方法
    """
    find_elements_by_id("q")
    find_elements_by_name("q")
    find_elements_by_css_selector("#q")
    find_elements_by_xpath('//*[@id="q"]')
    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,".service-bd li")   # 参数为查找方式和值

    节点交互

    import time
    from selenium import webdriver
    
    browser = webdriver.Chrome()
    
    browser.get("https://www.taobao.com")
    
    """
    selenium可以驱动浏览器来执行一些动作:
    输入文字用send_keys()
    清空文字用clear()
    点击按钮用click()
    """
    
    input = browser.find_element_by_id("q")
    input.send_keys("iPhone")   #在搜索框输入iPhone
    
    input.clear()  # 清空搜索框的文字
    time.sleep(2)
    input.send_keys("iPad")  # 在搜索框输入iPad
    
    button = browser.find_element_by_class_name("btn-search")  # 获取点击按钮
    button.click()  # 点击搜索

    动作链

    from selenium import webdriver
    from selenium.webdriver import ActionChains   # 引入动作链
    browser = webdriver.Chrome()
    url = "https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
    browser.get(url)
    
    browser.switch_to.frame("iframeResult")  # 切换到元素所在的frame[框架]
    """
    可以传入id、name、index以及selenium的WebElement对象,index从0开始
    """
    
    source = browser.find_element_by_css_selector("#draggable") # 找到被拖拽对象
    target = browser.find_element_by_css_selector("#droppable") # 找到目标
    
    actions = ActionChains(browser)       # 声明actions对象
    actions.drag_and_drop(source,target)  # 拖拽元素的起点和终点
    actions.perform()  # 执行动作
    
    action.click_and_hold()    # 点击且长按,更多方法查看官方文档

    执行Javascript代码

    from selenium import webdriver
    
    browser = webdriver.Chrome()
    url = "https://www.zhihu.com/explore"
    browser.get(url)
    
    browser.execute_script("window.scrollTo(0,document.body.scrollHeight)") # 将进度条下拉到最底部
    browser.execute_script("alert('hello word')")  # 弹出alert提示窗

    获取节点信息

    from selenium import webdriver
    browser = webdriver.Chrome()
    
    url = "https://www.zhihu.com/explore"
    
    browser.get(url)
    
    """
    WebElement常用属性:
        get_attribute 获取属性值
        text          获取文本值
        id            获取节点id
        location      获取节点在页面中的相对位置
        tag_name      获取标签名称
        size          获取节点大小(宽和高)
    """
    
    # 获取属性
    logo = browser.find_element_by_id("zh-top-link-logo")  # 获取logo节点
    print(logo)  # 返回值为WebElement对象
    
    logo_class = logo.get_attribute("class")   # 获取zh-top-link-logo节点的class属性值
    print(logo_class)
    
    
    # 获取文本值
    text_Ele = browser.find_element_by_css_selector(".question_link") # 通过css选择器获取文本内容所在的标签
    text = text_Ele.text  # 取出标签内的文本内容
    print(text)
    
    
    # 获取ID 位置 标签名和大小
    test = browser.find_element_by_class_name("zu-top-add-question")
    print(test.id)       # 0bfe7ae6-ebd9-499a-8f4e-35ae34776687
    print(test.location) # {'x': 759, 'y': 7}
    print(test.tag_name) # button
    print(test.size)     # {'height': 32, 'width': 66}
    无头浏览器
    from
    selenium import webdriver from selenium.webdriver.chrome.options import Options # 创建chrome参数对象 opt = Options() # 把chrome设置成无界面模式,不论windows还是linux都可以,自动适配对应参数 opt.add_argument('--headless') # 创建chrome无界面对象 driver = webdriver.Chrome(options=opt) driver.get("http://www.baidu.com") print(driver.page_source)
  • 相关阅读:
    起步学习软件开发(.Net 方向)的指导
    Lesktop开源JS控件库
    软件岗位职责
    asp.net 获取网站根目录总结
    微软是怎样做测试的
    打造WebIM
    CodeSmith 系列一
    Crack .NET
    Visual Studio IDE 实用小技巧3
    程序员公司的选择
  • 原文地址:https://www.cnblogs.com/yongyuandishen/p/14904857.html
Copyright © 2011-2022 走看看