已经解决

1、selenium.common.exceptions.ElementNotVisibleException: Message: element not visible
2、selenium.common.exceptions.InvalidElementStateException: Message: invalid element state: Element is not currently interactable and may not be manipulated
出现以上两种异常的原理:
1、元素还没加载出来就操作,通常是alert框,解决办法time.sleep(1),时间自己调试。
2、元素你看得到,但是代码要操作的元素是跟随鼠标变更样式的,或者其他条件实时变更的,导致代码不能“看见”。这种情况就需要通过js操作dom元素来适应场景。
我测试页面有一个input,在鼠标不操作是时候样式如下:

<input id="batch_quto" value="0" data-role="numerictextbox" role="spinbutton" style="display: none;" class="k-input" type="text" aria-valuemin="0" aria-valuenow="0" aria-disabled="false" aria-readonly="false">

当鼠标点击输入框,样式变为:

<input id="batch_quto" value="0" data-role="numerictextbox" role="spinbutton" style="display: inline-block;" class="k-input" type="text" aria-valuemin="0" aria-valuenow="0" aria-disabled="false" aria-readonly="false">

二者的区别:

style="display: none;"
style="display: inline-block;"

display 属性设置元素如何显示。所以无论是通过xpath、id来定位元素都无法用代码输入文本到input。
解决方法,使用splinter的js执行方法操作该input 的style属性,而要在你操作的若干个div嵌套中发现你操作的元素才是真正的难点:

# 以下4行代码耗费我3天的时间实验验证得出
browser.evaluate_script('document.getElementById("batch_quto").style="display: inline-block; visibility: visible;"')
browser.evaluate_script('document.getElementById("batch_quto").contentEditable = true')
browser.find_by_id('batch_quto').fill("120")
# 还原样式以免影响其他显示
browser.evaluate_script('document.getElementById("batch_quto").style="display: none; visibility: visible;"')

3、Message: unknown error: Element 。。。 is not clickable at point。。。
如果确认能找到元素,那么time.sleep(1)。
如果细心的你发现要点击的元素在浏览器底部位置,那么真的是被什么元素给遮挡了。所以可以:

# js操控浏览器滚动
browser.evaluate_script('window.scrollTo(0,800)')
# jquery操控浏览器的空间滚动,这里简单学习下jquery就懂了,回头我会把基础贴出来
browser.evaluate_script('$(".mk-product-body").scrollTop(500)')
# 模糊查询并操作
browser.evaluate_script('$("input[id^=\'logisticsWeight\']").first().val("500")')
browser.evaluate_script('$("input[class=\'k-formatted-value noEdit k-input\']").first().click()')
browser.evaluate_script('$("input[id^=\'logisticsWeight\'").last().val("1500")')
browser.evaluate_script('$("input[class=\'k-formatted-value noEdit k-input\']").last().click()')

执行操作太快,要手动等待。想修改splinter定义的方法,但是只读。。。解决思路很简单,github上clone一份splinter的源码,修改源码click事件,加一个sleep,再通过源码安装splinter即可。

Splinter使用中遇到的问题集锦相关推荐

  1. Android studio使用中问题集锦

    1. Installation failed with message INSTALL_CANCELED_BY_USER. 我在使用红米 note进行安卓开发,运行项目时出现的提示. 我又换用了海马玩 ...

  2. Web前端面试题集锦

    Web前端面试题集锦 前端开发面试知识点大纲: 注意 转载须保留原文链接(http://www.cnblogs.com/wzhiq896/p/5927180.html )作者:wangwen896 H ...

  3. [转载] Java笔试题集锦

    参考链接: 关于Java中文件名和类名的误解 Java笔试题集锦 1.MVC的各个部分都有那些技术来实现?如何实现? 答:MVC是Model-View-Controller的简写."Mode ...

  4. 【问答集锦】联邦学习让隐私保护和海量数据学习兼得!

    2020腾讯广告算法大赛专题直播周是由腾讯广告打造的一档大咖直播活动,特邀2020腾讯广告算法大赛的专家评委,针对联邦学习.机器学习.大数据等前沿领域的核心话题进行分享,并为算法爱好者们答疑解惑.我们 ...

  5. 计算机理论指导论文,关于计算机理论论文集锦-20210705011555.docx-原创力文档

    关于计算机理论论文集锦 多元智能理论与计算机实践教学 一.多元智能理论与教学的关系 多元智能理论是由美国哈佛大学教育研究院的心理发展学家霍华德加德纳在1983年提出.其中,主要包括语言智能.逻辑一数理 ...

  6. 工业机器人pallet指令_近30年现场一线工作者,讲述工业机器人应用案例集锦!...

    原标题:近30年现场一线工作者,讲述工业机器人应用案例集锦! <工业机器人应用案例集锦>特点: 1.作者从事工控及数控技术近30年,长期在现场一线工作,主持各类型大小项目50余项. 2.案 ...

  7. 网站推广手段集锦(2008七夕节中国情人节版)

    网站推广手段集锦(2008七夕节中国情人节版) 本文是在<网站推广方法大全(2008迎奥运版)>的基础上,新添加了9种网站推广手段(即第65条到第72条)后整理.补充和更新而成,现在的推广 ...

  8. 2016最新Java笔试题集锦

    更新时间:2015-08-13         来源:网络投诉删除 [看准网(Kanzhun.com)]笔试题目频道小编搜集的范文"2016最新Java笔试题集锦",供大家阅读参考 ...

  9. 金蝶K3产品环境行业篇常见问题集锦(一)-(二) -(三)

    金蝶K3产品环境&行业篇常见问题集锦(一)-(二) -(三) 1.K/3 环境 1.1 如何确认数据服务部件是否安装 适用版本: K/3 V11.0.1 问题表现: 如何判断数据服务部件是否安 ...

最新文章

  1. 我在北京工作这几年 – 一个软件工程师的反省
  2. Learning OpenCV Lecture 5 (Filtering the Images)
  3. html+not选择器,CSS3属性选择器与(:not)选择器_html/css_WEB-ITnose
  4. 写脚本时遇到的一些问题+自己的一些简单总结[小白版]
  5. java垃圾回收机制(简述)
  6. 微软加入字节码联盟,进一步开发支持Blazor 的WebAssembly技术
  7. c语言每轮for循环初始化i,十三.Linux博客-2016年8月18日while、for特殊用法、selet循环与菜单、函数...
  8. 多线程的那点事儿(之数据互斥)
  9. SpringBoot中获取微信用户信息竟然这么简单!
  10. 『ORACLE』 Linux和oracle用户下的常用命令(11g)
  11. npm install xxxx --legacy-peer-deps命令是什么?
  12. 机器视觉:高动态范围图像
  13. Sqoop基于时间列的增量数据之LastModified方式
  14. RK3568平台开发系列讲解(安卓适配篇)Android11旋转屏幕
  15. 如何解决移动端 Retina 屏(高清屏)1px 像素问题
  16. 两个int类型数据交换的神级操作
  17. 什么是DDL?其含义及其常用命令解析
  18. CSS画出半圆,四分之一圆,三角等图形
  19. [blog] Speech Recognition Is Not Solved 语音识别领域尚待解决的子问题
  20. 线性规划问题及单纯形法-线性规划问题的求解方法

热门文章

  1. 什么是分布式系统(通俗易懂的说法)
  2. Hadoop集群搭建(详细简单粗暴)
  3. Python随机数、随机序列生成
  4. async 函数 ajax,Async 函数的使用及简单实现
  5. 贪心算法——数轴距离模型(货仓选址,邮局安排,糖果传递)
  6. 没有爸妈的年夜饭,吃出一门新生意
  7. linux ipv6教程,CentOS IPv6设置
  8. 2019肇庆学院“菜鸟杯“程序设计竞赛题解
  9. Wi-Fi技术及其发展
  10. Netron神经网络结构可视化只显示权重没有箭头,已解决