zoukankan      html  css  js  c++  java
  • selenium基本使用

    安装

    pip install selenium

    使用 (以chrome浏览器为例)

    1.导入: from selenium import webdriver

    2.创建浏览器驱动对象

    方法一: 将下载好的chrome浏览器驱动文件加入到python目录下

    browser = webdriver.Chrome() # 默认路径为python环境目录

    方法二:指定chrome浏览器驱动文件路径

    chromedriver = 'C:Program Files (x86)GoogleChromeApplicationchromedriver'
    browser = webdriver.Chrome(chromedriver)

    3.打开浏览器网页访问url

    打开网页:

    browser.get('https://www.taobao.com')

    关闭网页窗口,并退出浏览器:

    driver.close()  # 关闭浏览器窗口
    driver.quit()  # 退出浏览器

    4.获取元素

    a. 获取单个元素:

    find_element_by_name()是根据Name值获取

    ind_element_by_id()是根据ID获取

    find_element_by_xpath()是根据Xpath提取

    find_element_by_css_selector('#xxx') # id : #xxx class: .xxx

    driver.find_element_by_link_text('账号登录') # 通过链接的文本取元素

    其他方法:

    from selenium.webdriver.common.by import By

    find_element_by_id(id)
    就等价于find_element(By.ID, id)

    find_element_by_css_selector('#xxx')
    等价于find_elements(By.CSS_SELECTOR, '.service-bd li')

    b.获取多个元素

    find_elements_by_css_selector('#xxx li') # 根据id=xxx来获取下面的所有li的结果

    5.前进后退

    browser.back()  #后退
    time.sleep(1)
    browser.forward() #前进

    6.切换窗口

    driver.execute_script('window.open()')  # 执行js代码, window.open():打开一个空页面

    browser.current_window_handl) # 当前窗口
    browser.window_handles # 所有窗口列表

    browser.switch_to.window(browser.window_handles[1]) #切换到指定窗口

    7.模拟登陆CSDN

    import time

    from selenium import webdriver

    driver = webdriver.Chrome()  # chrome驱动文件在默认目录python目录下

    driver.get('https://passport.csdn.net/login')

    login = driver.find_element_by_link_text('账号登录') # 通过链接的文本取元素
    login.click()
    time.sleep(1)

    username = driver.find_element_by_id('username')
    username.send_keys('用户名')  # 输入账号

    pwd = driver.find_element_by_id('password')
    pwd.send_keys('密码')   # 输入密码

    login_btn = driver.find_element_by_css_selector('.btn.btn-primary')
    login_btn.click()

    8.截图

    driver.save_screenshot('csdn.png')

    9.获取网页源码

    driver.page_source()
    # 遇到随滚轮滑动动态加载的页面,需要模拟滚轮滑动到底部后,再获取源码, 滑动速度不能太快,每次滑动一段距离即可.

    10.实现拖拽效果

    from selenium import webdriver
    from selenium.webdriver import ActionChains

    driver = webdriver.Chrome()
    actions = ActionChains(driver)

    driver.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')

    # 切换iframe iframe是一个独立新窗口,需切换
    driver.switch_to.frame('iframeResult')

    draggable = driver.find_element_by_id('draggable')
    droppable = driver.find_element_by_id('droppable')

    actions.drag_and_drop(draggable, droppable)
    actions.perform()

    # time.sleep(3)
    # driver.quit()

    11.滚动效果

    滚动条下拉到底

    #方法1
    driver.execute_script('window.scrollTo(0, document.body.scrollHeight)') # 0到页面最大高度
    #方法2
    driver.execute_script("document.documentElement.scrollTop=10000")

    12.谷歌无头模式

    options = webdriver.ChromeOptions()  # chrome配置选项
    options.add_argument('headless')  # 添加无头模式参数

    driver = webdriver.Chrome(options=options)

    13.执行js语句

    driver.execute_script()
    方法如果有返回值,有以下几种情况:
      1、如果返回一个页面元素(document element), 这个方法就会返回一个WebElement
      2、如果返回浮点数字,这个方法就返回一个double类型的数字
      3、返回非浮点数字,方法返回Long类型数字
      4、返回boolean类型,方法返回Boolean类型
      5、如果返回一个数组,方法会返回一个List<Object>
      6、其他情况,返回一个字符串
      7、如果没有返回值,此方法就会返回null
      例:
      distance = driver.execute_script('var distance=document.body.scrollHeight;return distance;') # 获取页面高度
      需要返回值时, js代码必须 return 该返回值

    14.cookies操作

    # 获取所有cookies信息
    driver.get_cookies()

    # 添加一个cookie信息
    driver.add_cookie({'name': 'lisi', 'age': 18}) # 添加的cookie必须是字典形式
    # 可以将get_cookies() 获取的 cookies 遍历添加进去

    # 删除所有cookies
    driver.delete_all_cookies()

     

     

     

     

     

  • 相关阅读:
    LightOJ 1236 Pairs Forming LCM(算数基本定理)
    LightOJ 1197 Help Hanzo(区间素数筛法)
    hdu4291 A Short problem(矩阵快速幂+循环节)
    弗洛伊德判圈法
    poj 1845 Sumdiv (算数基本定理+逆元)
    2018 ACM-ICPC 亚洲青岛区域网络赛 K XOR Clique(异或)
    牛客网暑期ACM多校训练营(第二场)A-run
    最长上升子序列和最长公共子序列
    Olympic Bus
    现代密码学
  • 原文地址:https://www.cnblogs.com/Deaseyy/p/11266780.html
Copyright © 2011-2022 走看看