目录
环境搭建
- 下载chromedriver,跳转链接: chromedriver.
- 解压至浏览器(我的是Chrome)安装目录下,为exe文件,记下路径。
- 电脑属性中配置环境变量,将路径复制进去。
- 在终端输入pip install selenium命令,安装selenium。
# ------------------Selenium元素定位---------------------------------
from selenium import webdriver
from selenium.webdriver.chrome.webdriver import Service
'''注意需要将chromedriver.exe放在chrome的安装目录下,path的路径是安装目录下的chromedriver.exe,同时配置环境变量'''
path = 'D:\Google\Chrome\Application\chromedriver.exe'
# 出现的错误(已经解决)
"""selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary"""
# 又出现需要Service,反复查询和试验,确定为以下代码:
service = Service(path)
browser = webdriver.Chrome(service=service)
url = 'https://www.jd.com/'
browser.get(url)
# ----------------------------------------------------------崩溃了!!!
元素定位
# ------------------------元素定位-六种方法-------------------------------------
from selenium import webdriver
from selenium.webdriver.chrome.webdriver import Service
from selenium.webdriver.common.by import By # 新的find_element代替了旧的find_element_by_id,需要引入的函数
path = 'D:\Google\Chrome\Application\chromedriver.exe'
service = Service(path)
browser = webdriver.Chrome(service=service)
url = 'https://www.jd.com/'
browser.get(url)
# 1.根据id查找,id="J_feeds"
element = browser.find_element_by_id('J_feeds')
print(element)
'''DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead'''
"""结果为:(找到了)
<selenium.webdriver.remote.webelement.WebElement (session="f22a28779d66ba58817a34a4b0748438", element="999134af-a201-488f-9994-4403bdb77154")>"""
# 上面显示方法过时了,下面为新方法的使用:
'''新的用法find_element(By.ID, 'J_feeds')''' # J_feeds,为你推荐
element = browser.find_element(By.ID, 'J_feeds')
print(element)
"""<selenium.webdriver.remote.webelement.WebElement (session="3f612dac1c7c428f573ada2d9a1037e5", element="00bb9643-bf4f-42d4-a864-dfa8164802ac")>"""
# 2.根据name查找,name="description"
element = browser.find_element_by_name('description')
print(element)
''' DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead'''
"""结果为:(找到了)
<selenium.webdriver.remote.webelement.WebElement (session="00169398d51c869c59b6ebce2c9998b9", element="e7c0e31e-cccd-44b7-800e-696610b09902")>"""
# 上面显示方法过时了,下面为新方法的使用:
element = browser.find_element(By.NAME, 'description')
print(element)
# 3.根据xpath查找,
element = browser.find_element_by_xpath('//*[@id="J_feeds"]')
print(element)
element = browser.find_element(By.XPATH, '//*[@id="J_feeds"]')
print(element)
# 4.根据标签名字tag_name查找,
element = browser.find_element_by_tag_name('a')
print(element)
element = browser.find_element(By.TAG_NAME, 'a')
print(element)
# 5.根据css_selector查找,使用bs4语法来获取对象 (注意与xpath的路径区别)
element = browser.find_elements_by_css_selector('#J_seckill > div > div > div.seckill-list > div > div > div > a:nth-child(5)')
print(element)
element = browser.find_elements(By.CSS_SELECTOR, '#J_seckill > div > div > div.seckill-list > div > div > div > a:nth-child(5)')
print(element)
# 6.根据link_text查找,里面为文字
element = browser.find_element_by_link_text('京东秒杀')
print(element)
element = browser.find_elements(By.LINK_TEXT, '京东秒杀')
print(element)
自动化代码实战
# -------------------------自动化操作实战-------------------------------
from selenium import webdriver
from selenium.webdriver.chrome.webdriver import Service
from selenium.webdriver.common.by import By
import time
path = 'D:\Google\Chrome\Application\chromedriver.exe'
service = Service(path)
browser = webdriver.Chrome(service=service)
# 打开网页
url = 'https://www.jd.com/'
browser.get(url)
# 停顿一秒
time.sleep(1)
# 找到输入框
shuru = browser.find_element(By.ID, 'key')
# 输入华为手机
shuru.send_keys('华为手机')
time.sleep(1)
# 找到搜素按钮
button1 = browser.find_element(By.CLASS_NAME, 'button')
# 点击按钮
button1.click()
time.sleep(2)
# 滑倒底部
page_bottom = 'document.documentElement.scrollTop=10000'
# 执行
browser.execute_script(page_bottom)
time.sleep(2)
# 找到下一页的位置,复制xpath路径
next_page = browser.find_element(By.XPATH, '//*[@id="J_bottomPage"]/span[1]/a[9]')
next_page.click()
time.sleep(3)
# 找一个手机图片
button2 = browser.find_element(By.TAG_NAME, 'img')
button2.click()
time.sleep(3)
# 返回上一页
browser.back()
# 回到上一页
time.sleep(2)
browser.forward()
# 退出网页
time.sleep(2)
browser.quit()
# ---------------------------------------------------------
运行效果如下:
Selenium自动化代码实战运行视频