Python Selenium 基础

如果你有一定的python基础 开始看python自动化 可以参考如下selenium基础

 

首先你需要查看浏览器版本  Chrome可以打开chrome://settings/help查看

知道版本后 再去http://chromedriver.storage.googleapis.com/index.html下载对应版本的webdriver

如果你是linux系统 解压到/usr/bin/目录下 并给予执行权限 chmod +x /usr/bin/chromedriver 其他系统可查度娘

 

其次导入包 

from selenium import webdriver

如果没安装的话 请按照编辑器提示安装

之后就可以开始写代码了~

就跟学代码第一个程序是print('helloworld')一样 让我们自动化打开度娘吧~


from selenium import webdriver   # 导入webdriver包

import time  # 导入time模块
 
driver = webdriver.Chrome()    # 初始化一个谷歌浏览器实例:driver

还可以选择火狐或IE浏览器 Firefox()    Ie()
 
driver.maximize_window()        # 最大化浏览器
 
driver.get("https://www.baidu.com")  # 通过get()方法,打开一个url站点

driver.find_element_by_xpath("//*[@id='kw']").send_keys("百度一下")  # 搜索输入框输入百度一下
driver.find_element_by_xpath("//*[@id='su']").click()  #点击百度一下按钮

time.sleep(2)# 导入time模块,等待2秒

if driver.find_element_by_xpath("//*[@id='1']/h3/a[2]").is_displayed(): # 1.xpath定位 验证蓝色官方模块是否出现
    print('test pass: element found by xpath')
try: # 异常处理
    if driver.find_element_by_id("content_right"): # 2.id 定位 if True: 如果没找到会报错
        print('test pass: element found by id')
    time.sleep(1)
    driver.find_elements_by_id('kw').clear()  # 清除文本
    time.sleep(1)
    driver.back()  # 浏览器返回操作
    time.sleep(1)
    driver.forward()  # 浏览器前进操作
    time.sleep(1)
    driver.back()  # 浏览器返回操作
    time.sleep(1)
    print("此时我回到了百度首页")
    driver.refresh() # 刷新当前页面
    # print(driver.capabilities['version'])  # 打印浏览器version的值
    if driver.find_element_by_tag_name('map').is_displayed(): # 3.tag_name 定位map模块是否存在
        print('test pass: element found by tag_name')
    if driver.find_elements_by_link_text('新闻'): # 4.link_text 定位
        print('test pass: element found by link_text')
    if driver.find_elements_by_partial_link_text('hao'): # 5.partial_link_text 关键词定位 包含hao的文本
        print('test pass: element found by partial_link_text')
    if driver.find_element_by_class_name('s_ipt'): # 6.class_name 定位搜索框是否存在
        print('test pass: element found by class_name')
    if driver.find_element_by_name('wd'): # 7.name 定位搜索框是否存在
        print('test pass: element found by name')
    if driver.find_element_by_css_selector('#su'): # 8.css 定位搜索按钮是否存在
        print('test pass: element found by css_selector')

 

#  8种元素定位方式


    print(driver.find_element_by_id('s_lg_img').size)
    handle = driver.current_window_handle
    print(handle) # 打印当前窗口句柄
    time.sleep(1)
    url = driver.find_element_by_link_text('新闻').get_attribute('href')
    print('新闻的url:'+ url)
    time.sleep(1)
    js = 'window.open("'+url+'")'
    driver.execute_script(js) # 执行js命令 打开新闻页
    time.sleep(2)
    print(driver.current_url) # 获取当前页面的url
    print(driver.title) # 获取当前页面的title
    print('=======')
    assert u'百度一下' in driver.title
    if u'百度一下,你就知道'== driver.title:
        print('Assertion test pass')
    print('=======')

    # driver.execute_script("scroll(0,2400)") # 这个是第二种方法,比较粗劣,大概的拖动多少像素
    handles = driver.window_handles # 获取所有窗口句柄
    print(handles)
    for newhandle in handles:
        if newhandle != handle:
            driver.switch_to.window(newhandle)
            # driver.find_element_by_id('xx').click() 可以在新窗口操作
            target = driver.find_element_by_css_selector("#change-city") # 一定要切换句柄后才能操作
            driver.execute_script("arguments[0].scrollIntoView();", target)# 移动到目标元素
            print('找到目标元素了!!')
            time.sleep(2)
            driver.close() # 关闭新窗口
            driver.switch_to.window(handles[0]) # 切换回原窗口
    for i in driver.find_elements_by_css_selector('#u1>a'): # for循环 find_elements获取一个list 可用于获取所有的图片 类似文本模块等
        print(i.text+':'+i.get_attribute('href'))
    ele = driver.find_element_by_css_selector('#lg')
    actionChains = ActionChains(driver)
    actionChains.context_click(ele).send_keys(Keys.ARROW_DOWN).send_keys(Keys.ENTER).perform() # context_click()右键
    time.sleep(3)
 

    driver.get_screenshot_as_file('.//baidu.png') # 保存截图到当前目录下 名字可设为变量
    driver.execute_script("window.alert('这是一个测试Alert弹窗');")
    time.sleep(2)
    # driver.switch_to.alert.accept() # 点击弹出里面的确定按钮
    driver.switch_to.alert.dismiss() # 点击弹出上面的X按钮

# time.sleep(999) #调试功能可放前面调试 因为程序是按顺序执行 就不用一个一个等

 

    # 处理iframe切换
    # 有时候我们发现元素定位没问题,但就是找不到元素报错。可能需要处理iframe切换
    # driver.switch_to.frame("iframe1") # 使用switch_to 切换

    # ele= driver.find_element_by_id('s-bottom-layer-right').click() 全选操作 暂不行
    # ele.send_keys(Keys.CONTROL + 'a')
    # time.sleep(5)
    # 验证控件是否被选中使用is_selected() 返回布尔值
    # driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 'T')  # 打开新tab 暂不行
    # time.sleep(3)
    # print("新打开了一个窗口")
except Exception as e:
    print("Exception found", format(e))

driver.quit()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值