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

2023-10-30

问题描述

分析问题

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())

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

selnium操作输入框无法输入内容 的相关文章

  • Plotly Python - 热图 - 更改悬停文本 (x,y,z)

    我有一个用 python 绘制的热图 悬停文本工作完美 但它的每个变量都带有 x y 或 z 前缀 如下所示 有什么办法可以改变这个 即x FY y Month 和z Count 这是生成上面热图的代码 dfreverse df hml v
  • Python:删除字符串开头的数字

    我有一些这样的字符串 string1 123 123 This is a string some other numbers string2 1 This is a string some numbers string3 12 3 12 T
  • Python str.format() 方法的默认 kwarg 值

    我希望尝试使现有字符串的复数化尽可能简单 并且想知道是否有可能得到str format 在查找 kwargs 时解释默认值 这是一个例子 string number of sheep sheep has run away dict comp
  • Celery 任务分析

    正如我所看到的top公用事业celery进程消耗大量CPU时间 所以我想介绍一下它 我可以在开发人员机器上手动执行此操作 如下所示 python m cProfile o test date Y m d T prof manage py c
  • 为什么我应该在 Python 中引用“名称”和“绑定”而不是“变量”和“赋值”?

    为什么我应该在 Python 中引用 名称 和 绑定 而不是 变量 和 赋值 我知道这个问题有点笼统 但我真的很想知道 在 C 和 C 中 变量是命名的内存位置 变量的值是存储在该位置的值 分配给变量并修改该值 所以变量是内存位置 而不是它
  • 使用 QuantLib 计算带有下限的 FloatingRateBond 的现金流量

    对 QuantLib 非常陌生 所以猜测这是一个菜鸟错误 很高兴了解这个强大的库 所以感谢作者和贡献者 如果没有下限参数 我可以在没有定价器的情况下为 FloatingRateBond 生成现金流量金额 所以我不明白为什么包含下限参数需要定
  • 如何在Python中增加文件名

    我正在尝试保存大量需要分成不同文件的数据 如下所示 数据 1 dat 数据 2 dat 数据 3 dat 数据 4 dat 我如何在Python中实现这个 from itertools import count filename data
  • 如何在 python 3.x 中使用 string.replace()

    The string replace 在 python 3 x 上已弃用 这样做的新方法是什么 与 2 x 一样 使用str replace https docs python org library stdtypes html str r
  • Python极坐标图:绘制与角度对应的值

    我正在尝试绘制以不同角度记录的传感器数据 import pandas as pd import matplotlib pyplot as plt create dataframe each row contains an angle and
  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if

随机推荐

  • jmeter性能测试常用插件简介

    jmeter性能测试常用插件简介 jmeter作为一个开源的接口性能测试工具 相对于商业性软件loadrunner来说 优点是更加灵活方便 操作简单 但相对来说 专业性和对性能参数的分析相对比较薄弱 但是通过第三方插件 就能将一些重要的参数
  • OpenCV 的浅拷贝和深拷贝,千万不要踩坑了!

    最近在使用 OpenCV 进行图像处理时 遇到一个小坑 这里总结一下 希望能对你有帮助 将一个变量赋给另一个变量 直接使用 符号即可 不过在 OpenCV 中就会遇到问题 Mat a b a b 都为 Mat 类型 这类拷贝方法是浅拷贝 没
  • 矩阵的逆以及实际应用

    矩阵逆的实际应用 最常见的是解线性方程组Ax b 如果A可逆 则解是x A 1 b 这类例子太多了 例如 小花 小明钱包里面各有几百元 小花金额的2倍和小明的金额 加起来是300元 小花金额的10倍比小明的金额对9倍 还多100元 则联立方
  • C语言之:数组的定义和初始化必备练习题

    1 作业标题 688 关于一维数组初始化 下面哪个定义是错误的 作业内容 A int arr 10 1 2 3 4 5 6 B int arr 1 2 3 4 5 6 C int arr 1 2 3 4 5 6 D int arr 10 0
  • Centos7安装Python2.7

    1 删除现有Python root test rpm qa grep python xargs rpm ev allmatches nodeps 强制删除已安装程序及其关联 root test whereis python xargs rm
  • 若依系统去redis

    1 注释 application yml文件中关于redis中所有的代码 2 修改framework模块下 RedisConfig该文件 删除也可以 3 在common模块中新建MyCache继承Cache类 package com xxx
  • 使用html+js书写分页功能

  • 【华为OD机试】拼接URL(C++ Python Java)2023 B卷

    时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 题目描述 给定一个URL前缀和URL后缀 通过 分割 需要将其连接为一个完整的URL 如果前缀结尾和后
  • Transformer背景介绍

    目录 Transformer的诞生 Transformer的优势 Transformer的市场 Transformer的诞生 论文地址 Transformer的优势 Transformer的市场
  • 解决el-table大数据表格卡顿问题

    解决el table大数据表格卡顿问题 使用umyui中的表格组件 使用ux grid组件 记录滚动条位置 使用umyui中的表格组件 umyui官网 当u table元素中注入data对象数组后 添加use virtual属性开启虚拟 同
  • MySQL基础(一)SQL基础

    DDL Data Definition Languages 数据定义语言 常用关键字包括create drop alter等 0 连接数据库 mysql u root pconnection id 表示的是连接次数1 创建数据库 CREAT
  • Android 应用安装成功之后删除apk文件

    问题 在应用开发中遇到需要这样的需求 在用户下载我们的应用安装之后删除安装包 解决 android会在每个外界操作APK的动作之后发出系统级别的广播 过滤器名称 android intent action package ADDED and
  • 实时音频编程(一)

    系列文章目录 实时音频编程 一 实时音频编程 二 实践与技巧 文章目录 系列文章目录 简介 实时系统 实时系统的分类 实时音频系统 什么会产生 glitch 阻塞 算法的最坏时间复杂度 锁 不使用锁的第一个原因 优先级倒置 不使用锁的第二个
  • 毕业设计 - 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 硬件设计 总体框架 AB32VG1主控MCU 5 软件说明 总体框架 6 部分核心代码 7 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创
  • 安卓是用java语言写的吗_android开发是用java语言吗?

    android开发的主流语言是java语言 但也可以使用其他语言 例可以通过Android NDK使用C C 作为编程语言来开发应用程序 也可使用SL4A来使用其他各种脚本语言进行编程 Android是以Linux为核心的手机操作平台 作为
  • 数字集成电路:电路系统与设计

    数字电路的设计 是按照层次化的方式进行的 在每一个设计层次上 一个复杂模块的内部细节可以被抽象化并用一个黑盒子或模型来替代 典型的抽象层次 器件 电路 门 功能模块 系统 这点类似于软件设计 也是采用层次化结构 一个完整的程序由若干个子程序
  • sqlserver给表添加新字段、给表和字段添加备注、更新备注及查询备注(sql语句)

    sqlserver给表添加新字段 给表和字段添加备注 更新备注及查询备注 代码如下所示 添加新字段及字段备注的语法 USE MY SlaughterProduct 数据库 ALTER TABLE MY SP PackagingWeight
  • 智能传感主要应用在哪些方面?

    人们普遍认为智能传感器是具有对外界环境等信息进行自动收集 数据处理以及自诊断与自适应能力的传感器 智能传感器 intelligentsensor 是具有信息处理功能的传感器 智能传感器带有微处理机 具有采集 处理 交换信息的能力 是传感器集
  • Python-Opencv 基本操作(一)

    下面完整代码在github仓库 传送门 文章目录 一 在图片上画线 二 图像通道BGR转换RGB 三 画矩形框 四 图片变形 五 opencv转换到PIL 六 利用opencv播放视频 七 PIL转换到Opencv 八 合成图片通道 九 给
  • selnium操作输入框无法输入内容

    问题描述 分析问题 1 开始以为等待时间问题没有找到元素 没解决 2 使用js操作元素 没解决 3 定位到光标元素 4 种cookie直接走接口调用 问题描述 selenium common exceptions ElementNotInt