1、打开浏览器,测试selenium是否能使用
# coding = utf-8
from selenium import webdriver
driver = webdriver.Chrome()
# 打开百度新闻
driver.get('http://news.baidu.com/')
time.sleep(2)
测试成功打开浏览器
2、进行一些其他的小操作
# 输出网页的标题
print(driver.title)
# browser.page_source是获取网页的全部html
print(driver.page_source)
3、获取网页单个标签的内容
'''【常用定位方法】
1、通过ID定位
方法:find_element_by_id('xx')
2、通过name定位
方法:find_element_by_name('xx')
3、通过class name定位
方法:find_element_by_class_name('xx')
4、通过tag name定位
方法:find_element_by_tag_name('xx')
说明:tag name在html中是标签的名字,在一个页面上会有很多个标签的名字相同。这种定位方法适用于需要定位一组元素时。'''
title = driver.find_element_by_class_name("hotwords_li_a")
hotwords = driver.find_element_by_xpath("//a[@class = 'hotwords_li_a']")
# 获取元素属性
print(hotwords.get_attribute("href"))
# 获取元素文本值
print(hotwords.text)
# 暂停5s等待网页加载
time.sleep(5)
4、网页操作,在搜索框自动输入内容并搜索
# 打开百度新闻,在搜索框数据字符串并进行搜索。
search = driver.find_element_by_id("ww")
searchBtn = driver.find_element_by_id("s_btn_wr")
search.send_keys("python")
searchBtn.click()
time.sleep(5)
5、进度条下拉(大部分网页适用)通过代码执行JavaScript
driver = webdriver.Chrome()
driver.get('http://news.baidu.com/')
driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')
driver.execute_script('alert("To Bottom")')
6、在同一窗口一次前进后退打开多个网页
# 前进后退-实现浏览器的前进后退以浏览不同的网页
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
time.sleep(3)
driver.get('http://news.baidu.com/')
time.sleep(5)
driver.get('http://www.51testing.com/zhuanti/selenium.html/')
time.sleep(5)
# 返回到上一页面(后退)
driver.back()
time.sleep(1)
# 进入之后进入的页面(前进)
driver.forward()
driver.close()
7、增加浏览器窗口
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
# 建立一个新窗口
driver.execute_script('window.open()')
print(driver.window_handles)
# 在新窗口中打开网页
driver.switch_to_window(driver.window_handles[1])
driver.get('http://news.baidu.com/')
# 建立一个新窗口
driver.execute_script('window.open()')
time.sleep(1)
# 在新窗口中打开网页
driver.switch_to_window(driver.window_handles[2])
driver.get('http://www.51testing.com')
8、异常处理
try:
browser = webdriver.Chrome()
browser.get('http://www.baidu.com')
except:
print('Time Out')