002_selenium

Posted 汁虫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了002_selenium相关的知识,希望对你有一定的参考价值。

 

 

/*
目录: 
    一 下载
    二 插件:ChroPath
    三 定位变更
    四 基础用法
    五 搜索关键字,爬取内容
*/

 

一 下载

/*
下载WebDriver: 
    1 url: https://sites.google.com/chromium.org/driver/downloads
    2 查看电脑chrome版本,下载对应WebDriver
*/

 

 

二 插件:ChroPath

/*
插件: ChroPath
    1 生成: 定位
    2 生成: 正则表达式
    3 录制: 自动录制; 手动调整。
*/

 

 


三 定位变更

 

 

/*
Old API    New API
find_element_by_id(‘id’)                      find_element(By.ID, ‘id’)
find_element_by_name(‘name’)                    find_element(By.NAME, ‘name’)
find_element_by_xpath(‘xpath’)                   find_element(By.XPATH, ‘xpath’)
find_element_by_link_text(‘link_text’)              find_element(By.LINK_TEXT, ‘link_text’)
find_element_by_partial_link_text(‘partial_link_text’)     find_element(By.PARTIAL_LINK_TEXT, ‘partial_link_text’)
find_element_by_tag_name(‘tag_name’)                find_element(By.TAG_NAME, ‘tag_name’)
find_element_by_class_name(‘class_name’)             find_element(By.CLASS_NAME, ‘class_name’)
find_element_by_css_selector(‘css_selector’)           find_element(By.CSS_SELECTOR, ‘css_selector’)

*/

 

四 基础用法

from selenium import webdriver  # 导入selenium库中的webdriver模块
import time  # 导入time模块

from selenium.webdriver.common.by import By  # 导入selenium库中的By模块
from selenium.webdriver.common.keys import Keys  # 导入selenium库中的Keys模块

if __name__ == \'__main__\':
    PATH = "C:/Users/123/Desktop/chromedriver_win32/chromedriver.exe"  # 设置chromedriver的路径

    driver = webdriver.Chrome(PATH)  # 创建Chrome浏览器驱动对象
    driver.get("https://www.baidu.com")  # 访问URL - 百度
    time.sleep(5)  # 等待5秒钟,使页面加载完成

    # 方法一:使用ID定位元素
    driver.find_element(By.ID, "kw").send_keys("汁虫 博客园")  # 定位搜索框元素,输入关键字"汁虫 博客园"
    time.sleep(3)  # 等待3秒钟,使搜索结果加载完成
    driver.find_element(By.ID, "su").click()  # 定位搜索按钮元素,点击搜索按钮

    # 方法二:使用变量定位元素
    e = driver.find_element(By.ID, "kw")  # 定位搜索框元素
    e.send_keys("python" + Keys.RETURN)  # 输入关键字"python",并按下回车键进行搜索

    time.sleep(2)  # 等待2秒钟
    driver.quit()  # 退出浏览器驱动

 

 

五 搜索关键字,爬取内容

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


if __name__ == \'__main__\':
    PATH = "C:/Users/123/Desktop/chromedriver_win32/chromedriver.exe"
    driver = webdriver.Chrome(PATH)
    driver.get("https://hahow.in/")  # 访问url

    # 等待搜索框元素加载完成
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, "//header/div[@id=\'header\']/nav[1]/div[1]/div[2]/div[1]/ul[1]/li[5]/div[1]/div[1]/input[1]"))
    )
    e = driver.find_element(By.XPATH, "//header/div[@id=\'header\']/nav[1]/div[1]/div[2]/div[1]/ul[1]/li[5]/div[1]/div[1]/input[1]")
    e.clear()
    e.send_keys("python" + Keys.RETURN)

    # 等待“影音課程”链接加载完成
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, "影音課程"))
    )
    e = driver.find_element(By.PARTIAL_LINK_TEXT, "影音課程")
    e.send_keys(Keys.RETURN)

    time.sleep(3)   # 无法解决: 显式等待 + 隐式等待
    r = driver.find_elements(By.CLASS_NAME, "marg-b-10")
    for t in r:
        print(type(t), t.text)   # 获取文本内容

    e = driver.find_element(By.XPATH, "//header/div[@id=\'header\']/nav[1]/div[1]/div[2]/div[1]/ul[1]/li[5]/div[1]/div[1]/input[1]")
    time.sleep(15)

    driver.quit()   # 退出

 

这样的Selenium你见过吗?

大部分人的第一次见Selenium是这样的
或是这样的
但更多是这样的

# -*- coding: utf-8 -*-
__author__ = "小dao"
from time import sleep

from selenium import webdriver
from selenium.webdriver.common.keys import Keys


if __name__ == "__main__":
    driver = webdriver.Chrome()

    driver.get("http://www.python.org")

    assert "Python" in driver.title

    ele = driver.find_element_by_name("q")

    ele.clear()

    ele.send_keys("pycon")

    ele.send_keys(Keys.RETURN)

    assert "No results found." not in driver.page_source

    sleep(5)

    driver.close()


值得你收藏,值得你star,值得你fork

简单易懂的文档,是这样的
清晰的文档目录

该文档地址为:https://seleniumhq.github.io/docs/

理解WebDriver Json Protocol是深入掌握Selenium Webdriver机制的核心,其已经是W3C标准,值得你了解一下
标准文档:https://w3c.github.io/webdriver/
下面看下Python端API的源码结构,理解目录结构,弄清楚每个模块的作用是掌握Selenium Webdriver的基本功
common目录

定义了通用的异常类

webdriver目录

android、backberry、chrome、edge、firefox、ie、opera、phantomjs、safari、 webkitgtk为不同模式的浏览器的支持

common为通用的一些定义

support为一些辅助支持功能

remote为最核心的api

如果你已经工作但是经常觉得难点很多,觉得自己测试方面学的不够精想要继续学习的,想转行怕学不会的,都可以加入我们644956177,群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!微信公众号【软件测试小dao

燃烧秀发输出内容,如果有一丢丢收获,点个赞鼓励一下吧!

以上是关于002_selenium的主要内容,如果未能解决你的问题,请参考以下文章

69期-Java SE-002_变量运算符-001-002

_002_用户操作

selenium keys模块

乘风破浪:LeetCode真题_002_Add Two Numbers

002thinkphp获取项目信息

002:带参宏调试