Message:Unable to locate element 问题解决方法
Python断断续续学了有一段时间了,总感觉不找个小项目练练手心里没底,哪成想出门就遇到“拦路虎”,一个脚本刚写完就运行报错,还好做足了心里准备,尝试自行解决。
或许网上有相关解决方案,不过毕竟自己亲自上手实操了,有的问题还是有必要记录下来加深印象,于是就有了这篇短文。
背景:访问禅道首页,通过第三方QQ账号与密码手动输入登陆。
代码:
# coding:utf-8
from selenium import webdriver
import time driver = webdriver.Firefox()
driver.get('http://www.zentao.net/ ') driver.find_element_by_link_text('登录').click()
driver.find_element_by_class_name('qq').click()
driver.find_element_by_css_selector('#switcher_plogin').click()
driver.find_element_by_id('u').send_keys('*******')
driver.find_element_by_id('p').send_keys('*******')
driver.find_element_by_id('login_button').click()
time.sleep(10) driver.quit()
学习了元素定位几种方式,所以利用link_text 、 class_name 、 css_selector 、 id四种方式,不过执行时却提示selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"css selector","selector":"#switcher_plogin"}
也就是说第10行代码有问题,不能通过css_selector方式定位到"#switcher_plogin"这个元素。
虽然检查了元素的唯一性,也尝试通过其他如xpath 、 name等方式进行定位,但是使用运行到这块报错。仔细回想了之前看的示例登陆126邮箱的过程,有个iframe的方式进行定位,于是参考进行了尝试。
不过由于对示例的没有深入了解,照猫画虎也出了糗。原例中查看是
,相应代码是
driver.switch_to.frame('x-URS-iframe')
于是我在开头代码的第9至10行插入了相同代码,结果可想而知,依然报错,只是提示信息变成了Unable to locate element:x-URS-iframe。
这时候再来查看禅道第三方qq登陆的地方
,原来还是有区别的,于是修改相应的代码为
driver.switch_to.frame('ptlogin_iframe')
此时再运行才正常通过。
虽然没什么技术难度,但还得心细,了解代码的真正含义,再去尝试写,不能照搬照抄。
最后附上完整代码,为接下来的尝试做准备~
# coding:utf-8
from selenium import webdriver
import time driver = webdriver.Firefox()
driver.get('http://www.zentao.net/ ') driver.find_element_by_link_text('登录').click()
driver.find_element_by_class_name('qq').click()
driver.switch_to.frame('ptlogin_iframe') # 通过frame方式定位
driver.find_element_by_css_selector('#switcher_plogin').click()
driver.find_element_by_id('u').send_keys('*******')
driver.find_element_by_id('p').send_keys('*******')
driver.find_element_by_id('login_button').click()
time.sleep(10) driver.quit()
Message:Unable to locate element 问题解决方法的更多相关文章
- 元素无法定位问题 NoSuchElementException: Message: no such element: Unable to locate element 解决方法
定位网页上某个按钮时,总是报错元素定位不到,具体如下:NoSuchElementException: Message: no such element: Unable to locate elemen ...
- 解决Selenium弹出新页面无法定位元素问题(Unable to locate element)
Python 2.7 IDE Pycharm 5.0.3 环境细节详见Python+Selenium+PIL+Tesseract真正自动识别验证码进行一键登录 对于同一页面无法定位元素问题请见姊妹篇解 ...
- org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element(识别不到想要的元素) 想获取 ...
- 关于xpath语句完全正确,但是页面报错: no such element: Unable to locate element: {"method":"xpath","selector":"xpath"}
之前使用selenium-webdriver来写UI的自动化脚本,发现有一个元素一直无法定位,查看其源码,如下 利用xpathChecker验证了xpath语句的是正确的,但是控制台一直报错: no ...
- Selenium定位不到指定元素原因之iframe(unable to locate element)
浏览过程中,图片中的内容可能太小,无法看清,可以>右键>在新标签中打开 Outline 项目原因,需要用selenium实现模拟登陆.模拟上传文件,自然就需要模拟点击[上传]按钮: 模拟点 ...
- selenium+python,解决selenium弹出新页面,无法定位元素的问题(报错:Unable to locate element:元素)
1.问题发生描述: 从一个页面进行点击等操作,页面跳转到第二个页面,对第二个页面中的元素,采取任何措施定位都报错,问题报错点如下: 2.出现问题的原因: 窗口句柄还停留在上一个页面,对于当前新弹出的页 ...
- 如果遇到找不到元素如何处理? Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"id","selector":"investmentframe"}
常见几种原因与应对,详细参见http://www.blogjava.net/qileilove/archive/2014/12/11/421309.html 1,动态ID无法找到,用xpath路径解决 ...
- Apache Ant运行时Unable to locate tools.jar解决方法
下载Apache Ant 一.解压ant安装包在D:\ant下 二.环境变量配置 ANT_HOME D:\ant\apache-ant-1.9.0 CLASSPATH ;%ANT_HOME%lib; ...
- The Eclipse executable launcher was unable to locate its companion launcher jar的解决方法
大家都知道eclipse是免安装的,基本上解压就能用,但是笔者在解压后打开eclipse时遇到一个奇葩的问题,如题目所示. 在网上搜了半天,基本上都说的是:The Eclipse executable ...
随机推荐
- Jmeter之解决烦人的中文乱码问题
Jmeter是一款国外开源工具,所以就跟LR一样,对中文的支持不是很好,经常会有同学录制脚本后回放或者是发送HTTP请求,看到响应报文里面有乱码! 那如何才能解决这个问题呢?我们分2个情况来分析: 一 ...
- 创建DNS子域及view
author:JevonWei 版权声明:原创作品 子域 子域同父域在同一个服务器上 新建子域jevon.danran.com vim /etc/named.rfc1912.zones zone &q ...
- java并发之原子性
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp17 1.原子性操作: 不能被线程调度机制中断的操作:--对原子性变量的赋值 ...
- RMI,RPC,SOAP对比分析
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp60 1.RMI 使用java的程序员,对于RMI(Remot ...
- 二,ESP8266 GPIO和SPI和定时器和串口
让这个灯亮 我们写lua用这个软件 链接:http://pan.baidu.com/s/1kVN09cr 密码:pfv7 http://www.cnblogs.com/yangfengwu/p/624 ...
- Mac Intellij Debug 模式
前言:本文的核心是记录debug的使用,与具体的操作系统无关. 1.什么是Debug Debug是程序的一种运行模式.用来发掘程序的走向,以及程序在运行过程中参数的变化. 2.Debug的作用 deb ...
- 结对编程1-基于GUI的四则运算生成器
201421123016郑怀勇 201421123017康建灿 程序代码 / 康建灿 一.需求分析 记录用户的对错总数. 程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算. 有 ...
- 【Beta】Daily Scrum Meeting——Day7
站立式会议照片 1.本次会议为第七次Meeting会议: 2.本次会议在中午12点,在陆大楼召开,本次会议为30分钟讨论今天要完成的任务以及接下来的任务安排. 燃尽图 每个人的工作分配 成 员 昨天已 ...
- 201521123079《java程序设计》第6周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...
- 201521123023《java程序设计》第四周学习总结
1. 本周学习总结 思维导图 常规: (1)抽象类:不能被直接实例化.只能作为其它类的父类,这一点与final类正好相反.用关键词abstract声明. (2)继承:只能有一个父类,即单继承,子类继承 ...