Python+selenium用法详解
发布日期:2021-05-14 14:11:46 浏览次数:15 分类:精选文章

本文共 2479 字,大约阅读时间需要 8 分钟。

Selenium是一款强大的自动化测试工具,广泛应用于Web应用测试、浏览器自动化操作以及前端JS渲染内容抓取等场景。以下是Selenium的核心用法总结:

  • 浏览器对象的正确使用
    避免将Python文件或包命名为Seleniumselenium,因为这些名称可能与Selenium的导入语冲突。正确的做法是使用from selenium import webdriver
    初始化浏览器驱动(以Chrome为例):
  • from selenium import webdriverbrowser = webdriver.Chrome()
    1. 访问页面并获取网页内容
      直接访问指定URL并获取页面渲染后的HTML内容:
    2. browser.get('https://www.taobao.com')print(browser.page_source)

      注意:page_source获取页面内容会包含JavaScript渲染后的完整HTML网页。

      1. 元素查找方法对比
        • 单个元素查找:

          input_first = browser.find_element_by_id('q')input_second = browser.find_element_by_css_selector('#q')input_third = browser.find_element_by_xpath('/id="q"')
        • 通用查找方法:

          from selenium.webdriver.common.by import Byinput_first = browser.find_element(By.ID, 'q')
        • 多个元素一次性查找:

          inputs = browser.find_elements_by_id('q')
        1. 元素交互操作
          自动化操作比如输入搜索关键词并点击搜索按钮:
        2. input.send_keys('iPhone')time.sleep(5)  # 等待搜索框清空input.clear()input.send_keys('男士内裤')

          按钮操作:

          button = browser.find_element_by_class_name('btn-search')button.click()
          1. 复杂动作与JavaScript执行
            • 拖拽动作:
              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.perform()
            • 执行JavaScript:
              browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')
            1. 获取元素信息
              • 元素属性获取:
                logo = browser.find_element_by_id('zh-top-link-logo')print(logo.get_attribute('class'))
              • 文本值获取:
                input.text
              1. Frame操作
                在父框架中操作子框架或反之:
              2. browser.switch_to.frame('iframeResult')# 子框架操作browser.switch_to.parent_frame()
                1. 显式和隐式等待
                  • 显式等待(如元素存在并可见):

                    from selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECwait = WebDriverWait(browser, 10)input = wait.until(EC.presence_of_element_located((By.ID, 'q')))
                  • 隐式等待默认为0秒:

                    browser.implicitly_wait(10)
                  1. 前进后退操作
                  2. browser.back()browser.forward()
                    1. Cookie管理
                    2. # 查看当前cookie:print(browser.get_cookies())# 添加或删除cookie:browser.add_cookie({'name': 'name', 'domain': 'www.zhihu.com', 'value': 'germey'})# 删除所有cookie:browser.delete_all_cookies()
                      1. 窗口切换
                      2. from selenium import webdriver# 打开新窗口:browser.execute_script('window.open()')# �切换到新窗口:handles = browser.window_handlesbrowser.switch_to.window(handles[1])
                        1. 异常处理
                        2. from selenium.common.exceptions import TimeoutException, NoSuchElementExceptiontry:    browser.get('https://www.baidu.com')except TimeoutException:    print('请求超时')try:    browser.find_element_by_id('hello')except NoSuchElementException:    print('元素未找到')finally:    browser.close()

                          以上方法覆盖了Selenium的核心功能使用场景,用户可以根据实际需求选择合适的实现方式。

    上一篇:Office(Excel、PPT、Word) VBA(宏)常用代码
    下一篇:Python爬虫实列:新浪微博热门话题

    发表评论

    最新留言

    网站不错 人气很旺了 加油
    [***.192.178.218]2025年05月06日 06时26分30秒