selenium库使用详解
1. 声明浏览器对象
#分别对应五种浏览器类型
browser=webdriver.Chrome()
browser=webdriver.Firefox()
browser=webdriver.Edge()
browser=webdriver.PhantomJS()
browser=webdriver.Safari()
2. 访问页面
#使用get()方法来请求页面
browser.get('https://www.taobao.com')
with open('taobao.html','w',encoding='utf-8') as f:
f.write(browser.page_source)
browser.close()
3. 查找节点
3.1 单个节点find_element()
input_first=browser.find_element_by_id('q')
input_second=browser.find_element_by_css_selector('#q')
3.2 多个节点find_elements()
lis=browser.find_elements_by_css_selector('.service-bd li')
print(lis)#返回列表
browser.close()
4. 节点交互
输入文字时用send_keys(),清空文字时用clear()方法
input=browser.find_element_by_id('q')
input.send_keys('iPhone')
time.sleep(1)
input.clear()
input.send_keys('iPad')
button=browser.find_element_by_class_name('btn-search')
button.click()
5. 获取节点信息
5.1获取属性get_attribute()
类似于pyquery中的attr()方法
logo=browser.find_element_by_id('zh-top-link-logo')
print(logo.get_attibute('class'))
#选中对应的节点后,提取属性为class的属性值
5.2获取文本值text
类似于pyquery中的text()方法
input=browser.find_element_by_id('zh-top-add-question')
print(input.text)
5.3获取id值,位置,标签名和大小
input=browser.find_element_by_id('zh-top-add-question')
print(input.id)
print(input.location)
print(input.tag_name)
print(input.size)
6. 前进和后退
browser.get('https://www.baidu.com/')
browser.get('https://www.taobao.com/')
browser.back()
time.sleep(1)
browser.forward()
browser.close()
7. Cookies
selenium可以方便的对Cookies进行操作,获取删除添加等
browser.add_cookie({'name':'name'})#添加cookies信息
browser.delete_all_cookies()#删除所有cookies信息
browser.get_cookies()#获取cookies信息
8. 延时等待
8.1 隐式等待
browser.implicitly_wait(10)
#等待10秒钟后查询节点
8.2 显式等待
browser=webdriver.Chrome()
browser.get('https://www.baidu.com/')
wait=WebDriverWait(browser,10)
input=wait.until(EC.presence_of_element_located((By.ID,'q')))
#注意这里是双括号
button=wait.until(EC.presence_of_element_to_be_clickable((By.CSS_SELECTOR,'.btn-search')))
以下为几个常用的等待条件
#(1)将指定节点加载出来
EC.presence_of_element_located((By.CSS_SELECTOR,''))
#(2)将所有指定节点加载出来
EC.presence_of_elements_located((By.CSS_SELECTOR,''))
#(3)节点可点击
EC.presence_of_element_to_be_clickable((By.CSS_SELECTOR,''))
#(4)某个节点值包含某文字,str中为所包含的文字
EC.text_to_be_present_in_element((By.CSS_SELECTOR,''),str(page))
9. 节点操作方法
#模拟鼠标点击对应节点
button.click()
#通过browser获取网页源代码
browser.page-source
#利用input框,输入元素
input.send_keys('')
#清除input框中的信息
input.clear()