selenium:是一个web的自动化测试工具,可以直接运行在浏览器上,
但是并不自带浏览器,需要有浏览器驱动,selenium可以根据我们的代码指令
让浏览器自动加载页面,这时得到的页面源码是经过浏览器渲染之后的,
然后我们就可以在页面源码中寻找节点(动态加载的网页,模拟登录)
导包from selenium import webdriver
加载页面
driver = webdriver.Firefox(
executable_path='/home/ljh/桌面/driver/geckodriver'
)
- 设置为无头浏览器
opt = webdriver.FirefoxOptions()
opt.set_headless()
driver = webdriver.Chrome(
options = opt,
executable_path='/home/zwz/Desktop/zwz/chromedriver'
)
- 导入容错的模块
from selenium.common import exceptions
try:
driver.get('https://www.baidu.com/')
except exceptions.TimeoutException as err:
print(err,'请求超时')
- 页面的相关操作:
Selenium 的 WebDriver提供了各种方法来寻找元素,假设下面有一个表单输入框如下:
<input type="text" name="user-name" id="passwd-id">
获取id标签值
element = driver.find_element_by_id("passwd-id")
获取name标签值
element = driver.find_element_by_name("user-name")
获取标签名值
element = driver.find_elements_by_tag_name("input")
也可以通过XPath来匹配
element = driver.find_element_by_xpath("//input[@id='passwd-id']")
driver.find_element_by_xpath()# 根据xpath路径定位标签(到找单个)
driver.find_elements_by_xpath()# 根据xpath路径定位标签(找所有)
driver.find_element_by_css_selector()# 根据css选择器定位标签
driver.find_element_by_partial_link_text()# 根据标签文本(完整)定位
driver.find_element_by_id()# 根据id寻找节点
driver.find_element_by_class_name()# 根据class属性寻找节点
- 向下滚动到页面底部
driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
- 关闭当前所在的窗口
driver.close()
- 退出浏览器
driver.quit()