博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
百度“搜索设置”之关于在页面定位某元素,而其中又参杂动态页面存在的问题解决方法...
阅读量:4967 次
发布时间:2019-06-12

本文共 1110 字,大约阅读时间需要 3 分钟。

遇到定位不到元素的问题,应先确定:

1.定位元素的方法写的对不对(应先查找html中是否含有相同的元素及值得存在,以便写出正确的定位方法)

2.页面中是否存在frame与iframe(应使用driver.switch_to_frame(frame的id)跳转到争取的iframe)

3.验证页面是否存在动态元素及页面,导致元素定位不到

示例:定位百度首页的"搜索设置"

 

 

 代码:

# coding=utf-8from selenium import webdriverdr = webdriver.Firefox()dr.get('http://www.baidu.com')abc = dr.find_element_by_link_text(u'设置')abc.click()ddd = dr.find_element_by_link_text('搜索设置')ddd.click()# print abc.get_attribute("outerHTML")

解释:

疑问1:他们不再同一个div,而且他们的关系差不多是同级.为什么要先click设置,在click搜索设置?

   因为搜索设置是动态的,不 click 那几行 html 还没生成

疑问2:看起来像是一个下拉框选取,为什么不采取那种定位元素的方法?

  我之前也采取过这种定位方式,后来可想而知,报一大推的错误。

  遇到此类问题,先去查看页面的源代码。在百度首页的源码中我们可以得知,“设置”与“搜索设置”不在同一个div下,且设置那行代码还有一个超链接。该连接就是"搜索设置"的页面。所以这种情况,我们只能通过二次定位方法来解决此问题

先来查看下拉框的源代码实例:

 注意下拉框他是在同一个select里面,此时我们可以采取下拉框的定位方式,如下:

 

 疑问3:print abc.get_attribute("outerHTML")是干嘛的?

 找不到正确的定位元素方法就把它打出来看看当时的内容就知道了。

 

转载于:https://www.cnblogs.com/8013-cmf/p/6555790.html

你可能感兴趣的文章
[BZOJ3449] [Usaco2014 Feb]Secret Code
查看>>
XHTML与HTML区别
查看>>
软考-程序设计语言基础(编译原理)
查看>>
2016峰会:项目管理与高级项目管理(广州站)
查看>>
用JAVA编写浏览器内核之实现javascript的document对象与内置方法
查看>>
linux 命令之top
查看>>
有关远程设置的问题
查看>>
BZOJ 1800: [Ahoi2009]fly 飞行棋
查看>>
2019,2月份第三个星期,js小突破了一波,笔记
查看>>
洛谷 [P3033] 牛的障碍
查看>>
jquery 对HTML标签的克隆、删除
查看>>
用C写的俄罗斯方块游戏 By: hoodlum1980 编程论坛
查看>>
世界上最方便的SharePoint移动客户端--Rshare
查看>>
MongoDB要点
查看>>
字段与属性的总结与比较
查看>>
05最小生成树_Prim
查看>>
centos iptables
查看>>
Mysql数据库日志
查看>>
Python基础-数据类型
查看>>
unity3d 移动与旋转 2
查看>>