python实现WEB自动化(python+selenium )

一、浏览器驱动
  selenium操作不同的浏览器,需要下载不同浏览器的驱动
  以chrome浏览器为例:
  1、进入到下载页面,找到符合自己浏览器版本的驱动
  2、下载好了之后,右键解压到当前文件夹

  3、将得到的chromedriver.exe放到Python的安装目录

    Firefox 浏览器驱动: 浏览器驱动
    Chrome 浏览器驱动:备用地址
    IE 浏览器驱动:IEDriverServer
    Edge 浏览器驱动:MicrosoftWebDriver

    from selenium import webdriver
    driver = webdriver.Chrome() # Chrome 浏览器
    #driver = webdriver.Firefox() # Firefox 浏览器
    #driver = webdriver.Ie() # Internet Explorer 浏览器
    #driver = webdriver.Edge() # Edge 浏览器
    #通过get()方法打开网页
    d.get('http://*')
二、定位方式
    id ---> find_element_by_id()
    name ---> find_element_by_name()
    class ---> find_element_by_class_name()
    tag_name ---> find_element_by_tag_name()
    文本链接 ---> find_element_by_link_text()
    部分文本链接 ---> find_element_by_partial_link_text()xpath
    xpath ---> find_element_by_xpath()
    css_selector ---> find_element_by_css_selector()
  send_keys()输入
  clear()清空输入内容
  click()单击操作

    # 使用selenium 之前,需要先导入
    from selenium import webdriver
    from time import sleep
    # 初始化一个chrome浏览器
    d = webdriver.Chrome()
    # 通过get方法打开网址
    d.get("http://*")
    sleep(2)
    # 通过id定位 user_login
    # 通过 send_keys('XXX')输入内容
    d.find_element_by_id('user_login').send_keys('随便输入')
    sleep(2)
    # 通过name定位 log
    # 通过 clear()方法 清除输入的内容
    d.find_element_by_name('log').clear()
    sleep(2)
    # 通过class_name定位 input
    d.find_element_by_class_name('input').send_keys('ad')
    sleep(2)
    # 通过tag_name定位 input
    d.find_element_by_tag_name('input').send_keys('min')
    d.find_element_by_css_selector('#wp-submit').click()
  close()关闭当前窗口
  quit()关闭所有浏览器并退出驱动
  text 获取元素文本属性

    from selenium import webdriver
    from time import sleep
    d = webdriver.Chrome()
    d.get('http://*')
    #通过xpath定位到用户名
    d.find_element_by_xpath('//label[@for="user_login"]/input').send_keys('admin')
    sleep(1)
    #通过css定位到用户名
    d.find_element_by_css_selector('#user_pass.input').send_keys('admin123')
    sleep(1)
    d.find_element_by_css_selector('#wp-submit').click()
    sleep(1)
    # text 获取元素的文本信息
    login_msg = d.find_element_by_css_selector('.display-name').text
    print(login_msg)
    d.close()#关闭浏览器
    d.quit()#关闭浏览器并且关闭驱动
  最大化窗口maximize_window()
  隐式等待implicitly_wait(10)
  判断元素是否可见is_displayed()

    from selenium import webdriver
    from time import sleep
    d = webdriver.Chrome()
    # 最大化窗口
    d.maximize_window()
    # 隐式等待,设置最大的等待时长,只对查找元素(find_elementXXX)生效
    d.implicitly_wait(10)
    d.get('http://*')
    d.find_element_by_css_selector('#user_login').send_keys('admin')
    # 判断元素是否可见 is_displayed()
    password_result = d.find_element_by_css_selector('#user_pass').is_displayed()
    print('可见的元素:'+str(password_result))
    other_result =
    d.find_element_by_css_selector('[name="redirect_to"]').is_displayed()
    print('不可见的元素:'+str(other_result))
    # 在html中 type="hidden" 属性 是不可见的
  submit() 用于提交表单

   点击登录按钮,一般情况下,使用click()进行点击
    有些时候也可以使用submit()代替click(),相当于敲回车
    #d.find_element_by_css_selector('#wp-submit').click()
    d.find_element_by_css_selector('#wp-submit').submit()
    sleep(1)
    get_attribute(“属性”) 获得属性值

  获取属性的值,根据属性名称获取对应的值
    # get_attribute('属性名称')
    att = d.find_element_by_css_selector('#user_login').get_attribute('size')
    print(att)
  鼠标悬停
    需要导入:
    from selenium.webdriver import ActionChains

    mte = d.find_element_by_css_selector('#menu-posts .wp-menu-name')# 需要悬停的元素
    #ActionChains(浏览器).move_to_element(悬停的元素).perform()
    # perform()执行操作
    ActionChains(d).move_to_element(mte).perform()

  表单切换
    switch_to.frame(需要切换到的表单)
    switch_to.default_content()切换到最外层表单

    #切换表单 switch_to.frame()
    # 先定位到需要切换的表单
    #方法一
    iframe = d.find_elements_by_tag_name("iframe")[0]
    d.switch_to.frame(iframe)

    #方法二
    d.switch_to.frame(0)

    #方法三
    frames = d.find_element_by_css_selector('#content_ifr')
    d.switch_to.frame(frames)

    d.find_element_by_css_selector('#tinymce').send_keys('这是正文')
    sleep(3)
    # 切换到最外层表单
    d.switch_to.default_content()
    d.find_element_by_css_selector('#publish').click()
  像表单的切换/鼠标的悬停 为提高成功率,最好是在操作后sleep(1)秒
  切换窗口 switch_to.window(需要切换到的窗口)
  获取所有窗口,以列表的形式返回过来 d.window_handles

    from selenium import webdriver
    from time import sleep
    d = webdriver.Chrome()
    # 最大化窗口
    d.maximize_window()
    # 隐式等待,设置最大的等待时长,只对查找元素(find_elementXXX)生效
    d.implicitly_wait(10)
    d.get('https://*')
    d.find_element_by_css_selector('#q').send_keys("appium环境搭建")
    d.find_element_by_css_selector('.ic-search').click()
    sleep(3)
    # 获取所有窗口,以列表的形式返回过来
    all_windows = d.window_handles
    print(all_windows)
    #切换窗口,根据所有窗口的下标来切换
    d.switch_to.window(all_windows[1])
    sleep(3)
    d.find_element_by_css_selector('#q').clear()
  关于select标签的下拉框如何进行选择
  首先需要先导入一个包(注意Select的S需要大写)
    from selenium.webdriver.support.ui import Select

    # 使用Select方法进行选择
    # 先导入Select 类from selenium.webdriver.support.ui import Select
    # 需要先定位到下拉框
    elements = d.find_element_by_css_selector('#role')
    #Select(需要操作下拉框).根据什么操作
    Select(elements).select_by_index(2)# 根据index,下标定位,从0开始
    sleep(3)
    Select(elements).select_by_value('administrator')#根据value定位
    sleep(3)
    Select(elements).select_by_visible_text('投稿者')#根据文本定位
  警告框的处理
    switch_to.alert

    from selenium import webdriver
    from time import sleep
    from selenium.webdriver import ActionChains
    d = webdriver.Chrome()
    # 最大化窗口
    d.maximize_window()
    # 隐式等待,设置最大的等待时长,只对查找元素(find_elementXXX)生效
    d.implicitly_wait(10)
    d.get('https:/*')
    mte = d.find_element_by_link_text('设置')
    ActionChains(d).move_to_element(mte).perform()
    sleep(1)
    d.find_element_by_css_selector('.setpref').click()
    sleep(1)
    d.find_element_by_css_selector('.prefpanelgo').click()
    # 获取警告框的文本信息
    alert_msg = d.switch_to.alert.text
    print(alert_msg)
    # 接受警告框 accept()
    d.switch_to.alert.accept()
    # 取消警告框 dismiss()
    d.switch_to.alert.dismiss()
  js代码

    from selenium import webdriver
    from time import sleep
    d = webdriver.Chrome()
    d.get('http://*')
    #window.scrollTo(A,B);# 控制浏览器的滚动条
    #window.scrollTo(A,B);# 控制浏览器的滚动条 A 表示与左边框的距离 B表示与上边框的距离
    # js_code1 = "window.scrollTo(0,600);"
    # js_code2 = "window.scrollTo(0,1200);"
    #document.querySelector('css的定位').removeAttribute('移除的属性名');
    js_code1 =
    '''document.querySelector('[name="testcookie"]').removeAttribute('type');'''
    d.execute_script(js_code1)
    sleep(5)
  定位一组元素find_elements_by_XXX
  以列表的形式返回

    # 定位一组元素
    goodlist = d.find_elements_by_css_selector('.goods_title')
    choice(goodlist).click()

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧安全方案

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值