selenium-day01-webdriver-定位和操作元素常用几种方法

先导:使用pycharm编写selenium代码环境准备:
1)导入webdriver模块 from selenium import webdriver
2)关联驱动
2-1 先去官网下载使用浏览器对应的驱动
chromedriver.exe,下载好的驱动不需要运行驱动,在py文件中指定驱动位置
driver=webdriver.Chrome(r’C:\all_workpace\tools_zdh\chromedriver.exe’)
3)把chromedriver.exe所在文件的路径加入到环境变量path中,注意:只是路径('C:\all_workpace\tools_zdh\)

1.通过driver.find_element_by_id()选择元素
( 启用驱动,使用该测试的网页打开控制台(F12),使用定位箭头查到被测试元素中的id,id是唯一的)
源代码:<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

ele=driver.find_element_by_id('kw')     #通过id寻找元素
#该操作也会返回一个对象,在webdriver中叫webelement,ele变量来接收它
#ele就是该输入框元素
ele.send_keys('chromewebdriver')   #在输入框中输入内容
btn=driver.find_element_by_id('su')     #在输入框中输入内容后,点击【百度一下】,这个元素的id是su
btn.click()
time.sleep(3)  #等网页加载,打开网页(我要用驱动去操作浏览器)

延伸1:对查询的内容做处理

if 'ChromeDriver Mirror' in res.text:       #比较该内容是否在该元素里用text属性
    print('success')
    #print(h3.text)
else:
    print('fail')
    print(res.text)
driver.quit()     #退出浏览器

延伸2:通过id选择元素2种写法:
写法一
ele=driver.find_element_by_id(‘kw’)
写法二

 from  selenium.webdriver.common.by import By
    ele1=driver.find_element(by=By.ID,value='kw') #参数是(通过by=By.属性名,value=属性值)

延伸3:元素的单数和复数
1)单数: 找不到元素就抛出异常
find_name=driver.find_element_by_name(‘tj_trnews’)
ele=driver.find_element_by_id(‘kw’)
只返回显示匹配的第一个元素
2)复数:
find_name=driver.find_elements_by_name(‘tj_trnews’)
ele=driver.find_elements_by_id(‘kw’)
返回显示匹配的所有元素,
复数的特点:
①输出值为一个列表,要print的话,用for循环遍历打印
②如果找不到,返回空列表,不抛出异常
③find元素的方法都有单复数的方式
(复数举例见下方river.find_element_by_class_name(‘mnav’)选择元素)


2.通过driver.find_element_by_name()选择元素(name属性的值)

——不建议用该方法,因为name容易重复
源代码:<a href="http://www.baidu.com/more/" name="tj_briicon" class="s_bri" target="_blank"> 更多产品</a>
find_name=driver.find_element_by_name(‘tj_briicon’) #更多产品
print(find_name.text)


3.通过driver.find_element_by_class_name(‘mnav’)选择元素(class属性的值)
源代码:<a href="http://news.baidu.com" target="_blank" class="mnav">新闻</a>
单数方式:

find_class=driver.find_element_by_class_name('mnav') 
 print(find_class.text)    #新闻

复数方式:
源代码:<div id="u_sp" class="s-isindex-wrap s-sp-menu"> <a href="http://news.baidu.com" target="_blank" class="mnav">新闻</a> <a href="https://www.hao123.com" target="_blank" class="mnav">hao123</a> <a href="http://map.baidu.com" target="_blank" class="mnav">地图</a> <a href="http://v.baidu.com" target="_blank" class="mnav">视频</a> <a href="http://tieba.baidu.com" target="_blank" class="mnav">贴吧</a> <a href="http://xueshu.baidu.com" target="_blank" class="mnav">学术</a></div>

find_names=driver.find_elements_by_class_name('mnav')
	 for one in find_names:
		   print(one.text)
新闻
hao123
地图
视频
贴吧
学术

4.通过driver.find_element_by_tag_name()选择元素
tag名如果是唯一的,可以根据tag名定位
源代码:<button name="button">按钮2</button>

ele=driver.find_element_by_tag_name('button')
print(ele.text)  #按钮2

5.通过driver.find_element_by_link_text()选择元素
注意:参数写的是该链接的文本

driver.find_element_by_link_text('新闻').click()  #完整的超链接文本
driver.find_element_by_partial_link_text('新').click()  #输入不完整的超链接文本

6.get_attribute(),获取元素的属性值,并打印出来
源代码:<a href="http://news.baidu.com" target="_blank" class="mnav">新闻</a>

 find_link=driver.find_element_by_link_text('新闻')
 print(find_link.get_attribute('href'))   #http://news.baidu.com/
 find_link=driver.find_element_by_class_name('target')
 print(find_link.get_attribute('href'))   #‘_blank’

7.获取元素标签中html的片段(源代码)
源代码:<div id="u_sp" class="s-isindex-wrap s-sp-menu"> <a href="http://news.baidu.com" target="_blank" class="mnav">新闻</a> <a href="https://www.hao123.com" target="_blank" class="mnav">hao123</a> <a href="http://map.baidu.com" target="_blank" class="mnav">地图</a> <a href="http://v.baidu.com" target="_blank" class="mnav">视频</a> <a href="http://tieba.baidu.com" target="_blank" class="mnav">贴吧</a> <a href="http://xueshu.baidu.com" target="_blank" class="mnav">学术</a></div>

find_innerHTML=driver.find_element_by_id('u_sp')
print(find_innerHTML.get_attribute('innerHTML'))   
#输出的片段代码不包括该上级标签(源代码中不包括`<div></div>`)
print(find_innerHTML.get_attribute('outerHTML'))   
#输出的片段代码包括该上级标签(和源代码相同)

8.通过上层元素找子元素
找的该元素没有id标签,只有name和class等,确保正确性,先找该元素上一级含有id 的上级元素


```javascript
<div id="u1">
	<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>
    <a href="https://www.hao123.com" name="tj_trhao123" class="mnav">hao123</a>
ele_id=driver.find_element_by_id('u1')  #先找上级元素
ele_id_name=ele_id.find_element_by_name('tj_trnews')  #再找目标元素
print(ele_id_name.text)         #再操作目标元素
print(ele_id_name.get_attribute('class'))       #再操作目标元素

9.使用driver.find_element_by_css_selector()定位和操作元素
见另外章节单独总结

10.使用driver.find_element_by_xpath()定位和操作元素
见另外章节单独总结

**

注:该文档是个人学习总结笔记,仅供参考

**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值