一、selenium
0.基本:
# 安装selenium:pip install selenium
from selenium import webdriver
driver=webdriver.Firefox() #获得火狐浏览器对象,IE:.Ie(),谷歌:.Chrome()
"""
# 不打开浏览器
options = webdriver.ChromeOptions() # 谷歌
options.add_argument('--headless') # 设置无头模式
driver = webdriver.Chrome(options=options)
"""
driver.get('http://www.baidu.com') #向浏览器发送网址
driver.find_element_by_id('kw').send_keys('hello') #输入
driver.find_element_by_id('kw').submit() #提交
driver.quit() #关闭
`1.定位元素:
(1)(定位单个元素)WebDriver提供了八种定位元素的方法,分别为:
find_element_by_id("id")
find_element_by_name("userName")
find_element_by_class_name("bg s_btn")
find_element_by_tag_name("input")
find_element_by_link_text("登录")
find_element_by_partial_link_text("很长") #<a>一个很长的链接</a>
find_element_by_xpath("/html/body/div[2]/form/input") #绝对路径
find_element_by_xpath("//input[@type='submit']") #属性
find_element_by_css_selector("form.fm>input#kw")
还可以这样写(其余以此类推):
from selenium.webdriver.common.by import By
find_element(By.ID,"id")
find_element(By.CLASS_NAME,"s_ipt")
(2)(定位一组元素),在定位单个元素的element后加上一个s:
inputs=driver.find_elements_by_tag_name('input') #所有input
for i in inputs:
if i.get_attribute('type')=='checkbox':
i.click() #若type属性为复选框则勾选
time.sleep(1)
cbs=driver.find_elements_by_css_selector('input[type=checkbox]')#所有复选框
for checkbox in cbs:
checkbox.click()
driver.find_elements_by_css_selector('input[type=checkbox]').pop().click()#去掉最后一个
#pop()或pop(-1)最后一个,pop(0)获取第一个,pop(1)第二个
`2.控制浏览器:
driver.back() #后退
driver.forward() #前进
driver.refresh() #刷新
元素操作:
clear() #清除文本
send_keys('hai') #模拟按键输入
click() #单击元素
submit() #提交表单
size #返回元素的尺寸
text #获取元素的文本
get_attribute('type') #获得属性值
is_displayed() #判断该元素是否可见