• 前言

    • 由于web页面元素class属性值带有空格,导致直接使用class属性值元素定位失败
    • 如: class=“inputstyle password” ,直接使用定位:driver.find_element_by_class_name(“inputstyle password”).send_keys(“1111”)
    • **html classname值描述: **规定元素的类的名称。如需为一个元素规定多个类,用空格分隔类名。
    • W3cschool 对于class属性介绍
  • 报错日志
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".inputstyle password"}(Session info: chrome=81.0.4044.138)
  • 示例:QQ邮箱 - 账号/密码输入框

    • 账号输入框:class = inputstyle

    • 密码输入框:class = inputstyle password

  • 解决办法

    • 方法一:driver.find_element_by_class_name方式定位

      • 控件class值包含多个类,可使用任意单个唯一类型来定位,如:inputstyle、password
      • 但是由于账号输入框class属性值为inputstyle,需取唯一属性,故密码输入框只能使用password
    driver.find_element_by_class_name("password").send_keys("1111")
    
    • 方法2:driver.find_element_by_css_selector
    # class属性定位
    driver.find_element_by_css_selector("[class='inputstyle password']").send_keys("1111")# 各空格变"."
    driver.find_element_by_css_selector(".inputstyle.password").send_keys("1111")# 单个唯一属性
    driver.find_element_by_css_selector(".password").send_keys("5555")
    
  • 示例代码

from selenium import webdriver
import timedriver = webdriver.Chrome()
driver.get("https://mail.qq.com/")
driver.implicitly_wait(10)driver.switch_to.frame("login_frame")# 由于当前PC已登录QQ,需从快速登录切换至账号密码登录方式
# 若无可注释
driver.find_element_by_class_name("switch_btn").click()# 报错用法
# driver.find_element_by_class_name("inputstyle password").send_keys("1111")# inputstyle 为账号输入框class属性值,即会输入至账号输入框
driver.find_element_by_class_name("inputstyle").clear()
driver.find_element_by_class_name("inputstyle").send_keys("1111")
time.sleep(2)# password 为密码输入框唯一属性值,即正常输入至密码输入框
driver.find_element_by_class_name("password").clear()
driver.find_element_by_class_name("password").send_keys("2222")
time.sleep(2)# css_selector定位:取class属性定位,即正常输入至密码输入框
driver.find_element_by_css_selector("[class='inputstyle password']").clear()
driver.find_element_by_css_selector("[class='inputstyle password']").send_keys("3333")
time.sleep(2)# css_selector定位:“.”替换空格,即正常输入至密码输入框
driver.find_element_by_css_selector(".inputstyle.password").clear()
driver.find_element_by_css_selector(".inputstyle.password").send_keys("4444")
time.sleep(2)# css_selector定位:“.”替换空格并取唯一属性值,即正常输入至密码输入框
driver.find_element_by_css_selector(".password").clear()
driver.find_element_by_css_selector(".password").send_keys("5555")
time.sleep(2)# css_selector定位:“.”替换空格,inputstyle为账号输入框唯一属性值,即正常输入至账号输入框
driver.find_element_by_css_selector(".inputstyle").clear()
driver.find_element_by_css_selector(".inputstyle").send_keys("5555")

Key words

Appium、selenium、class定位报错、web自动化、安卓自动化、class定位、控件定位

selenium:class属性内带有空格的定位坑相关推荐

  1. [Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、键盘鼠标操作)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  2. 【十五】Jmeter:“CSV 数据文件设置”参数化请求中出现带有空格的参数值

    目录 一.csv 参数化文件格式填写 二.CSV 数据文件设置 三.HTTP 请求配置带有空格的参数勾选 "编码" 四.察看结果树 一.csv 参数化文件格式填写 utf-8 编码 ...

  3. 整理的selenium WebDriver提供的8种元素定位方法

    selenium WebDriver提供的8种元素定位方法: (1)find_element_by_id() :id 定位 ,顾名思义,就是通过标签的id属性值来定位元素 (2) find_eleme ...

  4. Python爬虫【三】爬取PC网页版“微博辟谣”账号内容(selenium单页面内多线程爬取内容)

    专题系列导引   爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集   课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...

  5. 如何在PowerShell中使用带有空格和引号的参数运行EXE文件

    本文翻译自:How to run an EXE file in PowerShell with parameters with spaces and quotes How do you run the ...

  6. Shell脚本传递带有空格的参数

    在另一博文<Shell脚本实现DB2数据库表导出到文件>中实现了通过脚本实现将DB2数据库导出到文件,需要传入七个参数,最后一个是一个带有空格字符串,所以传入的时候有点问题,会自动识别空格 ...

  7. linux 有空格的文件夹,Linux之删除带有空格的文件

    导读 这篇文章主要介绍了Linux之删除带有空格的文件(不是目录),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧. 大家平时工作 ...

  8. 元素class属性中的空格

    今天练习js的一个样例时碰到了class属性中含有空格,不是太懂,于是就百度了一下,百度结果如下: <div class="box1 box2 textbox">这个d ...

  9. Linux下怎么创建和进入带有空格的文件夹

    有时候需要创建带有空格的文件夹,虽然这不是一个好的习惯,但是偶尔会遇到.用的最多的是很多时候需要进入带有空格的文件夹,如"a b"是一个文件夹名.创建:mkdir "a ...

最新文章

  1. Linux进程通信中IPC对象——IPC_PRIVATE与ftok
  2. fopen参数mode详解
  3. cookie中文乱码
  4. MyBatis 学习 - 注解
  5. MATLAB库函数unwrap(相位解卷绕)的C语言实现
  6. linux离线安装docker,centos离线安装docker
  7. php 删除指定html标签,php删除html标签的三种解决办法
  8. 时间机器(CDQ分治)
  9. 【word基础知识】如何将论文中的引文标签和参考文献编号自动关联
  10. 生物信息学 陈铭_后基因组时代生物信息学_陈铭.pdf
  11. jqueryui时间插件_jQueryUI菜单插件教程示例
  12. Cozmo机器人使用中文Scratch3编程案例(codelab)
  13. Keil uVision4 安装包及破解程序
  14. Android apk安装报错:应用未安装 软件包似乎已损坏
  15. Linux 程序性能分析与优化
  16. 产业分析:智能巡检机器人行业
  17. ARM联手SMI为Gear VR打造眼球追踪技术
  18. C语言实现一维信号小波阙值去噪
  19. 【RocketMQ】
  20. allegro标注尺寸设置_Allegro中尺寸标注文字的设置

热门文章

  1. Tesseract OCR简介(三)--安装及参数使用
  2. 如何控制鼠标和键盘的操作
  3. aws rds mysql 连接_解决连接到 Amazon RDS 数据库实例的问题
  4. 常州华翎六月风钢管舞惊人的优势
  5. 第一次用 Mac git 遇到的一些问题及解决方法,记录一下
  6. 杭州电子科技大学计算机研究生复试线,2018年杭州电子科技大学考研复试线和调剂要求...
  7. 可惜我是水瓶座 你不懂的水瓶座,不为人知的秘密
  8. 学java怎么做兼职?学Java什么程度才能找兼职?
  9. Java版数据结构之单向链表 新增,有序新增的两种方式,修改和删除(CRUD)
  10. 物联网:可穿戴设备与世界杯球员