准备
1、安装selenium, 使用python语言,则windows在终端输入进行安装selenium pip install selenium
2、安装浏览器对应版本的驱动
一个简单的案例(使用selenium)
from selenium import webdriver
wd = webdriver.Chrome(r'D:\webdrivers\chromedriver.exe')
wd.get('https://www.baidu.com')
wd.quit()
options = webdriver.ChromeOptions()
options.add_experimental_option(
'exclueSwitches',['enable-logging'])
wd = webdriver.Chrome(r'D:\webdrivers\chromedriver.exe',options=options
选择元素的基本方法
选择单个元素的基本方法
(1)根据ID选择元素
from selenium import webdriver
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_experimental_option(
'excludeSwitches',['enable-logging']
)
wd = webdriver.Chrome(r'd:\webdrivers\chromedriver.exe',options=options)
wd.get('http://www.baidu.com')
element = wd.find_element(By.ID,'kw')
(2)根据类名选择元素 wd.find_element(By.CLASS_NAME,'password'))
(3)根据Tag名选择元素 wd.find_element(By.TAG_NAME,'input')
(4)根据CSS选择器选中元素 wd.find_element(By.CSS_SELECTOR,'button[type=submit'). (CSS选择器会再下面详细讲)
选择多个元素的基本方法
"""选择多个元素的基本方法,根据类名class_name来选择元素"""
from selenium import webdriver
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_experimental_option(
'excludeSwitches',['enable-logging']
)
wd = webdriver.Chrome(r'd:\webdrivers\chromedriver.exe',options=options)
wd.get('http://cdn1.python3.vip/files/selenium/sample1.html')
elements = wd.find_elements(By.CLASS_NAME,'animal')
提示: 等待界面元素出现,当进行网页操作的时候,有的元素内容不是可以立即出现的,可能会等待一段时间 当页面还没加载出来的时候,根本就查找不到元素,代码执行的速度比服务器响应的速度快. 所以我们可以通过设置sleep时间来等待几秒钟,等服务器返回结果后,再去查找元素使用:from time import sleep sleep(2) 但是设置等待时间多长合适呢? 这个时候selenium就提供了一个implicitly_wait方法,该方法接收一个参数,用来指定最大的等待时长 使用:wd.implicitly_wait(10) 注意:implicitly_wait是指找不到元素了才会调用这个方法,每隔半秒中去界面上查看一次. 但是当元素出来了,但是元素中的内容还没加载出来,这个时候就需要我们去使用sleep()等待
操控元素的基本方法
操控元素通常包括: 1、点击元素 2、再元素中输入字符串,通常是对输入框这样的元素 3、获取元素包含的信息,比如文本内容,元素的属性等
(1)点击元素(.click())方法 调用webelement对象的click方法去点击元素的时候,浏览器接收到自动化命令,点击的是该元素的中心点位置 wd.find_element(By.CSS_SELECTOR,'button[type=submit').click()
(2)输入框: 输入字符串:调用元素webelement对象的send_keys()方法 清除输入框中的内容:调用webelement对象的clear()方法 wd.find_element(By.TAG_NAME,'input').send_keys('sdfsdf')
(3)获取元素信息 a.获取元素属性使用:
element.get_attribute('class')
b.获取整个元素对应的HTML文本内容:
element.get_attribute('outerHTML')
c.获取某个元素内部的HTML文本内容:
element.get_attribute('innerHTML')
d.获取输入框里面的输入的文本:
element.get_attribute('value')
e.获取元素展示在界面上的文本内容:
element.get_attribute('innerText')
或 element.get_attribute('textContent')
CSS表达式
css selector 语法选择元素
选择单个、多个元素:
选择单个元素 find_element(By.CSS_SELECTOR,CSS Selector参数)
选择多个元素 find_elements(By.CSS_SELECTOR,CSS Selector参数)
根据id选择元素,需要在id前加上 #
from selenium import webdriver
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_experimental_option(
'excludeSwitches',['enable-logging']
)
wb = webdriver.Chrome(r'd:/webdrivers/chromedriver.exe',options=options)
wb.get('http://cdn1.python3.vip/files/selenium/sample1.html')
elements = wb.find_element(By.CSS_SELECTOR,'#searchtext')
elements.send_keys('你好')
根据class选择元素,需要在class前加上.
from selenium import webdriver
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_experimental_option(
'excludeSwitches',['enable-logging']
)
wb = webdriver.Chrome(r'd:/webdrivers/chromedriver.exe',options=options)
wb.get('http://cdn1.python3.vip/files/selenium/sample1.html')
elements = wb.find_elements(By.CLASS_NAME,'animal')
for element in elements:
print(element.text)
选择子元素和后代元素
子元素
若元素2是元素1 的直接子元素,css selector选择子元素的语法是:
元素1 > 元素2 这个最终选择的元素是元素2,并且要求这个元素2是元素1的直接子元素
后代元素
若元素2 是元素1 的后代元素,css selector选择后代元素的语法是:
元素1 元素2 中间是一个或多个空格隔开
根据属性选择
"""根据属性选择"""
from selenium import webdriver
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_experimental_option(
'excludeSwitches',['enable-logging']
)
wd = webdriver.Chrome(r'd:/webdrivers/chromedriver.exe',options=options)
wd.get('http://cdn1.python3.vip/files/selenium/sample1.html')
element = wd.find_element(By.CSS_SELECTOR,'[href="http://www.miitbeian.gov.cn"]')
print(element.get_attribute('outerHTML'))
选择属性值包含某个字符串的元素
例如:选择a节点,里面的href属性包含了miitbeian字符串, 可以写成
a[href*="miitbeian"]
选择属性值以某个字符串开头的元素
例如:选择a节点,里面的href属性以http开头,可以写成 a[href^="http"]
选择属性值以某个字符串结尾的元素
a[href$="gov,cn"]
如果一个元素有多个属性
<div class="misc" ctype="gun">快乐学习</div>
CSS选择器可以指定选择的元素要同时具有多个属性的限制,像这样**:div[class=misc][ctype=gun] **
|