Selenium的使用
元素定位
xpath
/xxx 根节点
ele = b.find_element_by_xpath('/html')
ele.text
ele = b.find_element_by_xpath('/html/body/form/input')
ele.get_attribute('type')
'text'
ele.get_attribute('name')
'firstname'
ele.send_keys("张") #send_keys('追加内容') 模拟按键输入
# 第二个输入框(编号1开始)
ele1 = b.find_element_by_xpath('/html/body/form/input[2]')
ele2.get_attribute('name')
'firstname'
/xx/yy 根据绝对路径选择元素
//xxx 整个文档扫描, 找到所有xx元素
//xx/yy 所有父元素为xx的yy元素
. 选取当前节点的父元素节点
.. 选取父元素地址
//xx[@id] 选取所有元素中有 id 属性的元素
//input[not(@id)]
//xx[@id=yy] 选取所有 xx 元素id 属性为 yy 的元素
//* 所有元素
ele3 = b.find_element_by_xpath('//form//input/..')
ele3.tag_name
ele3 = b.find_element_by_xpath('//*')
ele3.tag_name
'html'
ele3 = b.find_element_by_xpath('//*[count(input)=2]')
ele3.tag_name
'form'
| 表达式 | 结果 |
|---|---|
ele = b.find_element_by_xpath('//*[local-name()="input"]')
ele.tag_name
ele.get_attribute('name')
'age'
ele = b.find_element_by_xpath('//input')
ele.get_attribute('name')
'age'
ele = b.find_element_by_xpath('//*[starts-with(local-name(), "i")]')
ele.tag_name
'input'
ele = b.fidn_element_by_xpath('//*[contains(local-name)(, "i")]')
ele.get_attribute('name')
ele.tag_name
'title'
ele = b.find_element_by_xpath('//*[contains(local-name(), "i")][last()]')
ele.tag_name
ele b = b.find_element_by_xpath('//form//*[contains(local-name(), "i")]')
ele.tag_name
'input'
ele.get_attribute('name')
'firstname'
ele b = b.find_element_by_xpath('//form//*[contains(local-name(), "i")][last()]')
ele.tag_name
'input'
ele.get_attribute('name')
'lastname'
ele b = b.find_element_by_xpath('//form//*[contains(local-name(), "i")][last()-1]')
ele = b.find_element_by_xpath('//title | //input[last()]')
ele.tag_name
'title'
webdriver 模块对浏览器进行操作
窗口全屏
b.maximize_window()
鼠标事件
sub_ele = b.find_element_by_link_text('selenium 学习')
sub_ele.click()
selenium 模块中的等待方法
implicitly_wait() 设置 webdriver 等待时间; 多个操作
WebDriverWait 等待条件满足后者超时后退出 from selenium.webdriver.support.ui import WebDriverWait 一个操作
| presence_of_element_located | 判断某个元素是否被加到了 dom 树里,并不代表该元素一定可见 |
| visibility_of_element_located | 判断元素是否可见(可见代表元素非隐藏,并且元素宽和高都不等于 0) |
Python爬虫库xPath, BeautifulSoup, re, selenium的详细用法
BeautifulSoup与Selenium用于网络爬取的对比

浙公网安备 33010602011771号