遇到了元素定位问题和定位到后无法执行点击操作等,闲话少说,直奔主题:

1.元素定位不到一般有如下3种情况,大家如果遇到了可以对号入座哈

a.查找的元素不在当前窗口中

解决方法:使用driver.switch_to.window()进行窗口的切换,一般在多个窗口时,使用切换到最后一个窗口就可以了

首先获取到当前所有的窗口 all_win = driver.window_handles

然后切换到最后一个窗口即可 driver.switch_to.window(all_win[-1]) 或 driver.switch_to.window(driver.window_handles[-1])

注:一般新打开的窗口都是最后一个,直接用[-1]下标即可,获取当前窗口句柄用driver.getWindowHandle()

b.当前元素不在当前页面,而是在frame或Iframe框架中

解决方法:首先查看元页面,查看是否有frame或iframe标签,也可以直接编码使用 frame_names = find_elements_by_tag_name('iframe') 或 (‘frame’)进行元素查找,并放到frame_names列表变量中

然后使用 driver.switch_to.frame(frame_names[0]) 切换到 第一个frame 框架中,根据 frame_names的长度,索此由0开始,到len(frame_names)-1个frame,如果切换到最后一个frame直接使用rame_names[-1]下标即可

此时再用 driver.find_element_by_xxx方法定位元素就可以定位到了。

注:在多层嵌到的iframe中可以使用 driver.switch_to.parent_frame() 切换到上一层iframe,也可以用driver.switch_to.default_content()切换到主页面中

c.页面加载慢,还没有加载完成就对元素进行定位

解决方法:使用sleep或webdriverwait等显示等待设置等待时间后再进行元素的定位

关于selenium自动化元素定位问题解决的几种方法的更多相关文章

  1. Selenium Web元素定位方法

    Selenium是用于Web应用测试的自动化测试框架,可以实现跨浏览器和跨平台的Web自动化测试.Selenium通过使用WebDriver API来控制web浏览器,每个浏览器都都有一个特定的Web ...

  2. 『心善渊』Selenium3.0基础 — 4、Selenium基础元素定位详解

    目录 1.什么是元素定位 2.Selenium元素定位常用API (1)By_id 定位 (2)by_name 定位 (3)by_class_name 定位 (4)by_tag_name 定位 (5) ...

  3. selenium的 元素定位、元素信息、交互

    selenium的元素定位? 元素定位:自动化要做的就是模拟鼠标和键盘来操作来操作这些元素,点击.输入等等.操作这些元素前首先 要找到它们,WebDriver提供很多定位元素的方法 方法: 1.fin ...

  4. 【基础】selenium中元素定位的常用方法(三)

    一.Selenium中元素定位共有八种 id name className tagName linkText partialLinkText xpath cssSelector 其中前六种都比较简单, ...

  5. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)

    转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...

  6. selenium界面元素定位

    一.        Selenium界面元素定位 本文元素定位以das2为例 #导入包 from selenium import  webdriver #打开火狐驱动 driver=webdriver ...

  7. python+selenium遇到元素定位不到的问题,顺便记录一下自己这次的错误(报错selenium.common.exceptions.NoSuchElementException)

    今天在写selenium一个发送邮件脚本时,遇到一些没有找到页面元素的错误.经过自己反复调试,找原因百度,终于解决了.简单总结一下吧,原因有以下几点: 一:Frame控件嵌套,.Frame/Ifram ...

  8. 《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  9. 《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

随机推荐

  1. python元祖(tuple)

    # 列表:有序,元素可以被修改 # 列表 # list # li = [111,22,33,44] # 元组:元素不可被修改,不能被增加或者删除 # ps: # tuple # tu = (11,22 ...

  2. 【算法随记七】巧用SIMD指令实现急速的字节流按位反转算法。

    字节按位反转算法,在有些算法加密或者一些特殊的场合有着较为重要的应用,其速度也是一个非常关键的应用,比如一个byte变量a = 3,其二进制表示为00000011,进行按位反转后的结果即为110000 ...

  3. 小白学 Python 爬虫(30):代理基础

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  4. Dubbo RPC调用参数校验---错误message自动返回

    Dubbo 的RPC调用中Consumer 和 Provider端都可以对调用的方法做传参验证,参数的验证可以通过JSR303规范 (Java Specification Requests) 提到的 ...

  5. WTM 3.1发布,完美支持.netcore 3.1

    在过去的2019年,承蒙各位的厚爱,WTM从零开始一年的时间在GitHub上收获了将近1600星,nuget上的下载量累计超过10万. WTM所坚持的低码开发,快速实现的理念受到了越来越多.netco ...

  6. Django 单表查询

    前言 如何只单独测试django中的某一个py文件呢?或者说如何书写测试脚本? 我们可以在任意一个py文件(应用下的tests或者自己新建一个)中书写以下代码: 前期准备 创建一个电影表 class ...

  7. OAuth2.0概念以及实现思路简介

    一.什么是OAuth? OAuth是一个授权规范,可以使A应用在受限的情况下访问B应用中用户的资源(前提是经过了该用户的授权,而A应用并不需要也无法知道用户在B应用中的账号和密码),资源通常以REST ...

  8. DNS自述:我是如何为域名找到家的

    对于互联网一代的我们,一出生就学会使用电脑.当我们对着浏览器地址栏输入www.baidu.com的时候,百度的首页就出现在面前.但你可曾想过,为什么我们输入www.baidu.com就可以弹出百度首页 ...

  9. Java类成员之方法

    方法含义: 1. 方法是类或对象行为特征的抽象,用来完成某个功能操作. 2.在某些语言中也称为函数或过程. 3.将功能封装为方法的目的是简化代码,可以实现代码重用. 4.在Java里的方法不能独立存在 ...

  10. 手抖把Python2.7卸载了,导致了自己的yum不可用以及yum因python版本无法使用的问题

    摘要: 从标题就能看到我有多心如死灰了,简单介绍下我是如何自残的过程. ①首先因为需要部署爬虫程序,然后安装Python3. ②Python3系列和Python2系列版本不向下兼容,所以我就卸载了机器 ...