selnium操作输入框无法输入内容

news2024/11/18 18:26:24

问题描述

分析问题

1、开始以为等待时间问题没有找到元素(没解决)

2、使用js操作元素(没解决)

3、定位到光标元素

4、种cookie直接走接口调用

问题描述

selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable  报错信息说明元素不能操作,也可能是没有找到元素所以我的send_keys操作报错了

分析问题

1、开始以为等待时间问题没有找到元素(没解决)

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

# 使用隐形等待方式获取元素

driver = webdriver.Chrome() 
wait = WebDriverWait(driver, 10000) 
sql_str_element = wait.until(lambda x: x.find_elements(by='xpath', value=sql_str_string))
sql_str_element.send_keys('SELECT * FROM pb_app')

2、使用js操作元素(没解决)

# 获取元素的html
document.getElementsByClassName("view-line")[1].innerHTML
#元素追加内容
document.getElementsByClassName("view-line")[1].append("SELECT * FROM pb_app")
# 获取元素的内容
document.getElementsByClassName("view-line")[1].textContent 

#元素替换内容

document.getElementsByClassName("view-line")[1].textContent.replace("pb_app","app_pb")

# 元素内容清空

document.getElementsByClassName("view-line")[1].textContent=""

# 选择器方式获取元素

document.querySelector('div.view-line').getElementsByTagName('span')[1].setAttribute('value','a');

 代码实现

#第一种:python找到class元素操作(依然报错如斯)
from selenium.webdriver.common.by import By

sql_str_elements = driver.find_elements(by=By.CLASS_NAME, value="view-line")
    # 这里是查询页面有tab几个就是用最后一个,这里是打开了2个,选取第二个(分析元素发现)
print(sql_str_elements[-1].get_attribute('outerHTML'))
sql_str_elements[-1].send_keys("SELECT * FROM pb_app")


#第二种:直接操作js命令(页面有效果输入了内容,但是无法点击执行按钮执行sql)
driver.execute_script('document.getElementsByClassName("view-line")[1].textContent="SELECT * FROM pb_app"')

3、定位到光标元素

分析元素发现特点

# 获取当前活动元素

document.activeElement  

 这次成功了。。。。。。。。。。。。。。

# 先在输入框中点击,让光标在这里闪烁
driver.find_element(by=By.XPATH, value='这个输入框的定位').click()
# switch_to.active_element获取当前活动的元素,并想这个元素发送内容
driver.switch_to.active_element.send_keys("select * from bp_app")

# js方式获取当前活动元素
active_element = driver.execute_script("return document.activeElement")  
# 这里的 return保证js执行结果获取
# TEXTAREA 编辑区域
active_element.send_keys(sql_str)

4、种cookie直接走接口调用

import requests
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.support.ui import WebDriverWait

# 登录
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10000)
driver.get("登录的url")
# 输入用户名
username_element = self.wait.until(lambda x: x.find_element(by="name", value="username"))
username_element.send_keys(Keys.CONTROL, 'a')   # 清理内容
username_element.send_keys("用户名")
# 输入密码
passwor_element = driver.find_element(by="name", value="password")
passwor_element.clear()
passwor_element.send_keys("密码")
# 点击登录按钮
login_button = driver.find_element(by="id", value="loginBtn")
login_button.click()


# cookie组装
# 获取所有的cookie
time.sleep(5) #  保证页面响应有cookie可以获取,也可隐性等待检查一个元素
for tt in driver.get_cookies():
    print(tt)
# 获取指定的cookie
remember_me = driver.get_cookie("rememberMe")
print(remember_me)
cookie_str = "=".join([remember_me["name"], remember_me["value"]])
print(cookie_str)

res = requests.post(
         url="调用的接口url",
         headers={"Content-Type": "application/json;charset=UTF-8",
                  "Cookie": cookie_str,
                  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36"
                  },
         # data是接口入参,这里sqlText才是我们需要根据情况变化的地方
         data=json.dumps({
                "sqlText": "SELECT * from bp_app",
                "dbId": 25901,
                "resultSetIndex": 0,
                "start": 0,
                "limit": 200,
                "isPrimary": False
            }))
print(res.status_code)
print(res.json())

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/54914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业数据图表- FineReport函数计算组成和语法概述

1. 概述 1.1 版本 1.2 功能简介 在设计模板时用户需要频繁的使用公式函数,例如:求和、求个数、做判断等等。 本文介绍函数的计算组成和语法。 2. 计算语法 2.1 概览 组成部分 语法 示例 函数 SUM(合同金额)、SUM(A1) 数据列 可输入有数据列的…

基于Vue+nodejs+Element-ui的聊天框项目

目录一、项目简介二、环境介绍三、系统展示四、视频功能展示五、前端核心代码展示六、MySQL 数据库创建功能展示七、node.js 核心代码八、总结一、项目简介 本项目基于纯前端(移动端)技术开发一个聊天系统,界面美观大方,采用Node…

PowerShell禁止运行脚本

运行脚本报错(pnpm -v) pnpm : 无法加载文件 D:\win11\program\NVM\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.mi crosoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1pnpm -v…

洛谷千题详解 | P1019 [NOIP2000 提高组] 单词接龙【C++、Java语言】

博主主页:Yu仙笙 专栏地址:洛谷千题详解 目录 题目描述 输入格式 输出格式 输入输出样例 解析: C源码: Java源码: -----------------------------------------------------------------------------------------------…

java+mysql基于SSM共享型汽车租赁系统-计算机毕业设计

项目介绍 共享汽车租赁公司的共享汽车租赁流程复杂、数据庞大,往往一个疏忽就会给公司造成极大的损失,于是越来越多的共享汽车租赁公司需要一个对各项信息的管理平台来避免这样的损失。为了满足这个需求,我们开发一个针对共享汽车租赁信息的…

MR直播实例(混合现实直播)高品质企业直播

阿酷TONY / 2022-12-2 / 长沙 / 超多组图 绿幕抠像 虚拟场景(三维场景)实时渲染,降低直播成本,带来线下活动所没有的沉浸式视听体验。 虚拟舞台场景介绍参见: 企业年会直播来个虚拟舞台场景如何?_阿…

负载均衡与高可用

目录 负载均衡 理论部分 应用层负载均衡 环境搭建 代理服务器配置 web服务器配置 验证 网络层负载均衡 环境搭建 代理服务器配置 mysql服务器配置 验证 高可用 理论部分 环境搭建 负载均衡高可用 lb1主要服务器配置 lb2备份服务器配置 web配置 验证 nginx故障问题 →→→→ 大虾…

【MySQL】-增删查改

作者:学Java的冬瓜 博客主页:☀学Java的冬瓜🌙 专栏:MySQL 分享:至若春和景明,波澜不惊,上下天光,一碧万顷。沙鸥翔集,锦鳞游泳,岸芷汀兰,郁郁青青…

傻妞旧版合集新版订阅

目录一、前言二、下载三、新版傻妞订阅合集一、前言 傻妞旧版本(合集),包含amd和arm版本收集于TG 我的是amd架构 [rootecs-mike_note ~]# cat /proc/version Linux version 4.11.8-1.el7.elrepo.x86_64 (mockbuildBuild64F25) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11…

Vue中的计算属性

计算属性&#xff1a;实际上是把vm中的属性进行计算加工&#xff0c;最后能够返回给页面一个结果 细想一下&#xff0c;其实methods方法也能实现1中描述的现象&#xff0c;但是计算属性最大的优势是缓存&#xff01;&#xff01;&#xff01; 举个例子 <div id"root&q…

【Android App】物联网实战项目之自动驾驶的智能小车(附源码和演示 超详细)

需要源码请点赞关注收藏后评论区留言私信~~~~ 当今社会正在步入一个万物互联的时代&#xff0c;它的技术基石主要来自5G、物联网和人工智能。 三者融合产生了许多新产品&#xff0c;其中最璀璨的当数自动驾驶的电动车&#xff1b;它汇聚了最新科技与工程实践的成果&#xff0c;…

【收纳】电脑资料-高效整理电脑上的文件

以前没想过整理文件&#xff0c;一般都是建各种文件夹&#xff0c;然后把资料拖进去&#xff0c;好像收起来了&#xff0c;但实际是随着文件越来越多&#xff0c;时间一久&#xff0c;经常找不到文件&#xff1b;后来逐渐意识到&#xff0c;需要改变。于是找了很多方法&#xf…

已分区的硬盘如何重新合并, 分出去的盘怎么重新合并

已分区的硬盘如何重新合并&#xff1f;磁盘分区后合区是指对原磁盘的分区进行合并&#xff0c;使之成为一个的磁盘分区&#xff0c;从具体的应用层面来分析&#xff0c;为什么会对磁盘分区后合区呢&#xff1f; 磁盘管理对磁盘分区后合区 在Windows系统中&#xff0c;磁盘管理…

UGUI性能优化学习笔记(二)合批

一、合批规则 合批&#xff1a;把渲染时使用相同材质、相同贴图的网格合并在一起&#xff0c;成为一个大网格&#xff0c;然后再调用一次Draw Call&#xff0c;直接渲染这一个大网格。这样做可以降低Draw Call的数量&#xff0c;以优化性能。 Unity是如何确定哪些网格可以进行…

[附源码]JAVA毕业设计货币博物馆展品管理系统(系统+LW)

[附源码]JAVA毕业设计货币博物馆展品管理系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项…

常用框架技术- 08 Spring Cloud简单易懂、易部署和易维护的分布式系统开发工具包

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言1.微服务理论1.1 微服务的特点1.2 微服务与微服务架构1.3 微服务的优点2.分布式集群概念2.1 分布式集群概念2.1.1 什么是分布式2.1.2 什么是集群2.1.3 分布式集群…

新品上线 Naive Admin Tenant 开箱即用多租户开发框架

Naive Admin Tenant 是一套企业级的权限管理开发平台&#xff0c;采用前后端分离模式&#xff0c;微服务版本前端框架支持多个选择&#xff0c;支持数据库&#xff1a;MySql、Oracle、SqlServer、PostgreSql 等&#xff0c;目前只支持 MySql&#xff0c;后面有客户需求会扩展支…

三维数字沙盘大数据人工智能模拟对抗推演系统开发教程第一课

三维电子沙盘大数据人工智能模拟对抗推演系统开发教程第一课 该数据库中只提供 成都市火车南站附近的数据请注意&#xff0c;104.0648,30.61658 而且该公用服务器带宽不大&#xff0c;所以会有些卡顿&#xff0c;建议下载数据库后本地使用&#xff0c;下载后的数据库有些许变…

《InnoDB引擎八》InnoDB关键特性-两次写

InnoDB 关键特性 InnoDB存储引擎的关键特性包括&#xff1a; Insert Buffer (插入缓冲)Double Write (两次写)Adaptive Hash Index (自适应哈希索引)Async IO (异步IO)Flush Neighbor Page (刷新领接页) 这些特性为InnoDB存储引擎带来了更好的性能以及更高的可靠性。 两次写 …

STM32 定时器单脉冲模式的使用记录

一、我要解决的问题 我的需求 需要单片机几乎同时在A,B,C 三个IO 分别输出T1&#xff0c;T2&#xff0c;T3 时长的高电平&#xff0c;时间结束后&#xff0c;恢复低电平。 初步思路 面对这个需求&#xff0c;我第一时间想到的是用三个定时器&#xff0c;分别设置T1,T2,T3 时…