Selenium 自动化测试工具

1 介绍

Selenium是浏览器的自动化测试工具,使用它可以控制浏览器各种点击等操作。

2 环境搭建

先安装Chrome等浏览器,然后安装对应版本的ChromeDriver驱动程序,然后pip安装Selenium

2 代码示例

看完,这个程序,你就掌握Selenium的基本用法

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver import ActionChains
from selenium.common.exceptions import NoSuchElementException
import time

browser=webdriver.Chrome() # 实例化一个Chrome
try:
    browser.get('https://www.baidu.com/') # 百度=======================================================================

    # # 例子测试
    # input = browser.find_element_by_id('kw')  # 查找对应节点
    # input.send_keys('python')
    # input.send_keys(Keys.ENTER)
    # wait = WebDriverWait(browser, 10)
    # wait.until(EC.presence_of_element_located((By.ID, 'content_left')))
    # print(browser.current_url) #当前页面url
    # print(browser.get_cookies()) # 当前页cookies
    # print(browser.page_source) # 当前页source html

    # 查找节点的方法
    # input_first=browser.find_element_by_id('kw')
    # input_second = browser.find_element_by_css_selector('#kw')
    # input_third = browser.find_element_by_xpath('//*[@id="kw"]')
    # print(input_third,input_second,input_third)

    # browser.get('https://www.taobao.com') # 淘宝=======================================================================

    # 多个节点
    # # lis=browser.find_elements_by_css_selector('.service-bd li') # 主要是将element换成elements
    # lis=browser.find_elements(By.CSS_SELECTOR,'.service li') # 和上面一样的
    # print(lis)

    # 节点交互
    # input=browser.find_element_by_id('q')
    # input.send_keys('iphone') # 输入文字
    # time.sleep(5)
    # input.clear() # 清空文字
    # input.send_keys('ipad')
    # button=browser.find_element_by_class_name('btn-search')
    # button.click() #按钮点击

    # 选项卡管理
    browser.execute_script('window.open()') # 打开一个选项啦
    time.sleep(3)
    print(browser.window_handles)
    browser.switch_to.window(browser.window_handles[1]) # 跳转到第二个选项卡
    browser.get('https://www.taobao.com') # 第二个选项卡访问淘宝
    time.sleep(3)
    browser.switch_to.window(browser.window_handles[0]) # 跳转回第一个选项卡
    browser.get('https://zhihu.com/explore') # 第一个选项卡访问知乎发现页 ,这样关闭的时候只会关闭第一个选项卡

    # # 前进 后退
    # browser.get('https://www.baidu.com/')
    # browser.get('https://www.zhihu.com/explore')
    # browser.back() # 后退
    # time.sleep(3)
    # browser.forward()
    # time.sleep(3)

    # 延时等待——显示等待
    # wait=WebDriverWait(browser,10) # 规定时间加载出来返回节点,没查找出来抛出异常
    # input=wait.until(EC.presence_of_element_located((By.ID,'q')))
    # button=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.btn-search')))
    # print(input,button)

    # browser.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable') # 菜鸟教程========================

    # # 动作链
    # browser.switch_to.frame('iframeResult') # 切换iframe
    # source=browser.find_element_by_css_selector('#draggable')
    # target=browser.find_element_by_css_selector('#droppable')
    # actions=ActionChains(browser) # 创建一个动作链对象
    # actions.drag_and_drop(source,target) # 调用actions的拖拽方法
    # actions.perform() # 执行方法

    # # 切换Frame
    # browser.switch_to.frame('iframeResult')
    # try:
    #     logo=browser.find_element_by_class_name('logo')
    # except NoSuchElementException:
    #     print('No Logo')
    # browser.switch_to.parent_frame()
    # logo=browser.find_element_by_class_name('logo') # 切换回父级frame
    # print(logo)
    # print(logo.text)

    # browser.get('https://zhihu.com/explore') # 知乎 发现页==============================================================

    # # 执行JavaScript
    # browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
    # time.sleep(3)
    # browser.execute_script('alert("To Bootom!")')
    # time.sleep(3)
    # browser.switch_to.alert.accept()

    # # 获取节点信息
    # logo=browser.find_element_by_id('Popover1-toggle')
    # print(logo)
    # print(logo.get_attribute('class')) # 获取属性
    # input=browser.find_element_by_class_name('ExploreSpecialCard-title')
    # print(input.text) # 获取文本
    # print(input.id) # 获取id
    # print(input.location) # 获取location
    # print(input.tag_name) # 获取tag_name
    # print(input.size) # 获取大小

    # # Cookies
    # print(browser.get_cookies())
    # browser.add_cookie({'name':'name','domain':'www.zhihu.com','value':'germey'}) # 添加一个cookie
    # print(browser.get_cookies())
    # browser.delete_all_cookies() # 删除所有的cookies
    # print(browser.get_cookies())

    # 延时等待-隐式等待
    # browser.implicitly_wait(10) #在找不到节点的时候等待10s之后抛出异常
    # input=browser.find_element_by_class_name('zu-top-add-question') # 这个节点不存在
    # print(input)


finally:
    browser.close()
posted @ 2021-07-27 15:33  未名w  阅读(175)  评论(0编辑  收藏  举报