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用于网络爬取的对比

posted @   Bruce_JRZ  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
点击右上角即可分享
微信分享提示