自动化工具selenium的使用
一.selenium+Python环境配置
1.安装Python3.5及以上版本,这里我安装的是Python3.7.4
2.安装selenium:pip install selenium
3.安装对应浏览器版本的驱动webdriver,查找对应版本如下
-
chromedriver:http://npm.taobao.org/mirrors/chromedriver/
-
geckodriver:https://github.com/mozilla/geckodriver/releases/
-
IE:http://selenium-release.storage.googleapis.com/index.html
4.将下载的webdriver(例如chromedriver.exe)文件放置在python环境变量目录的文件夹里
二.元素定位及浏览器基本操作
1.启动浏览器,前提是已经配置好环境
启动谷歌浏览器
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
启动火狐浏览器
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://www.baidu.com/')
启动ie浏览器
from selenium import webdriver
driver = webdriver.Ie()
driver.get('https://www.baidu.com/')
2.无头(无界面)启动浏览器
浏览器在后台静默运行,无需打开浏览器窗口,大大提升了selenium的运行效率
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--headless') # 无界面
options.add_argument('--disable-gpu') # 禁用GPU
driver = webdriver.Chrome(options=options)
driver.get('https://www.taobao.com/')
print(driver.page_source)
driver.quit() # 关闭浏览器
3.加载配置启动浏览器
selenium操作浏览器默认是不加载任何配置,如果需要加载用户的配置,可以使用如下方式
注意:
-
在加载用户配置时,如果你事先打开了浏览器占用了用户配置,会导致报错
-
用户配置路径使用双斜杠,或者像我一样在前面加r
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument(r'--user-data-dir=C:\Users\Administrator\AppData\Local\Google\Chrome\User Data')
driver=webdriver.Chrome(options=options)
driver.get('https://www.taobao.com/')
4.元素定位
- id定位:find_element_by_id()
- name定位:find_element_by_name()
- class定位:find_element_by_class_name()
- link定位:find_element_by_link_text()
- partial_link定位:find_element_by_partial_link_text()
- tag定位:find_element_by_tag_name()
- xpath定位:find_element_by_xpath()
- css定位:find_element_by_css_selector()
- find_element配合By定位:find_element(By.XPATH, ‘//*[@id=“q”]’)
By类的一些属性如下:
- ID = “id”
- XPATH = “xpath”
- LINK_TEXT = “link text”
- PARTIAL_LINK_TEXT = “partial link text”
- NAME = “name”
- TAG_NAME = “tag name”
- CLASS_NAME = “class name”
- CSS_SELECTOR = “css selector”
定位多个元素:在element后加个s(写的时候注意看清楚)
- id定位:find_elements_by_id()
- name定位:find_elements_by_name()
- class定位:find_elements_by_class_name()
- link定位:find_elements_by_link_text()
- partial_link定位:find_elements_by_partial_link_text()
- tag定位:find_elements_by_tag_name()
- xpath定位:find_elements_by_xpath()
- css定位:find_elements_by_css_selector()
- find_element配合By定位:find_elements(By.XPATH, ‘//*[@id=“q”]’)
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.taobao.com")
driver.page_source
input_second = driver.find_element(By.ID,"q")
input_third = driver