无法保持对 Selenium Python 驱动程序中元素的关注

2024-01-23

我试图通过 python 控制网络来运行脚本并下载相应的 csv 文件。

以下是网页的外观,其中包含仪表板菜单,可单击“搜索”其他按钮。单击“搜索”按钮后,它会显示一个“搜索”文本框,可以在其中输入代码并按 Enter 键运行。

现在我需要找到这个搜索框的元素。从 Chrome 中的 Inspect 来看,如下所示:

所以我使用了以下代码。在从文本文件复制代码并将其发送到该搜索框之前,我还使用操作将焦点保持在搜索框上。

def run_code():

""" Function to copy the code in Search and run it

"""

search_button=driver.find_element_by_link_text("Search")
search_button.click()

time.sleep(2)

with open('data_download_code.txt', 'r') as f:
    code_file= f.read()

content_box=driver.find_element_by_class_name("ace_content")

# Getting the focus on the element
actions=ActionChains(driver)
actions.move_to_element(content_box)
actions.click()

content_box.send_keys(code_file,Keys.ENTER)
#content_box.submit()

但是,它会引发焦点不在元素上的错误。

我不确定我是否从附加的 html 文件中获得了正确的搜索元素选择器,或者这只是一些焦点问题。我确实在那里使用了 Actions 类来获得焦点。

我希望代码读取txt文件中的文本并将其发送到搜索框,然后按回车键运行它。

WebDriverException: Message: unknown error: cannot focus element
  (Session info: chrome=71.0.3578.98)

编辑:选择器的额外 html 详细信息

Edit 2:

Edit 3:

因此,我能够获取搜索元素,并且它能够从 txt 文件复制代码并在搜索框中输入,但我发现它无法正确复制整个代码,因此会出现错误。请参阅随附的完整代码以及复制了多少内容。

sourcetype=perf_log_bizx
(host=pc*bcf* OR host=pc*bsfapi* OR servername=pc*bcf* OR servername=pc*bsfapi*) OR
(host=sc*bcf* OR host=sc*bsfapi* OR servername=sc*bcf* OR servername=sc*bsfapi*) OR
(host=ac*bcf* OR host=ac*bsfapi* OR servername=ac*bcf* OR servername=ac*bsfapi*) OR
NOT "/perfLogServlet" NOT "REQ-\[*" earliest="12/18/2018:08:00:00" latest="12/18/2018:12:00:00" 

   | rex field=_raw "\[(?<client_ip>[\d\.]+)\]\s+\[(?<company_id>[^,]+),(?<company_name>[^,]+),(?<company_schema>[\w\.]+),(?<dbpool>[^,]+),(?<user_id>[^,]+),\S+\]\s+\S+\s+\S+\s+(?<render_time>\d+)\s(?<server_time>\d+)\s(?<end2end_time>\d+)\s+\S+\s\S+\s\[.*\]\s+\d+\-(?<call_id>\d+)\s+(?<module_id>(-|\w+))\s(?<page_name>(-|\w+))\s(?<page_qualifier>(-|\w+))"
    | rex field=_raw "\[\[(?<MemoryAllocated>\d+)\w+\s+(?<CPUTimeTotal>\d+)\w+\s+(?<CPUTimeUser>\d+)\w+\s+(?<CPUTimeSystem>\d+)\w+\s+(?<FileRead>\d+)\w+\s+(?<FileWrite>\d+)\w+\s+(?<NetworkRead>\d+)\w+\s+(?<NetworkWrite>\d+)\w+\s+(?<NotClosedFiles>(\d+|-))\s+(?<NotClosedSockets>(\d+|-))\s+\]\]\s+(?<SQLInvokes>\d+)\s+(?<SQLTimeTotal>\d+)"

    | eval company_id = ifnull(CMID, company_id)
    | eval dbpool = ifnull(DPN, dbpool)
    | eval company_schema =ifnull(SN, company_schema)
    | eval user_id = ifnull(UID, user_id)

    | eval module_id = ifnull(MID, module_id)
    | eval page_name = ifnull(PID, page_name)
    | eval page_qualifier = ifnull(PQ, page_qualifier)

    | rex field=CAID "\d+\-(?<CAID>\d+)"
    | eval call_id = ifnull(CAID, call_id)

    | eval render_time = ifnull(RDT, render_time)
    | eval server_time = ifnull(SVT, server_time)
    | eval end2end_time = ifnull(EET, end2end_time)
    | eval MemoryAllocated = ifnull(MEM, MemoryAllocated)
    | eval CPUTimeTotal = ifnull(CPU, CPUTimeTotal)
    | eval CPUTimeUser = ifnull(UCPU, CPUTimeUser)
    | eval CPUTimeSystem = ifnull(SCPU, CPUTimeSystem)
    | eval FileRead = ifnull(FRE, FileRead)
    | eval FileWrite = ifnull(FWR, FileWrite)
    | eval NetworkRead = ifnull(NRE, NetworkRead)
    | eval NetworkWrite = ifnull(NWR, NetworkWrite)
    | eval NotClosedFiles = ifnull(0, NotClosedFiles)
    | eval NotClosedSockets = ifnull(0, NotClosedSockets)
    | eval SQLInvokes = ifnull(SQLC, SQLInvokes)
    | eval SQLTimeTotal = ifnull(SQLT, SQLTimeTotal)

    | eval request_type = if(call_id=0,"Root", "Subaction")

| search call_id = 0 AND page_name!="NONE"

    | eval full_page_name = module_id + "-" + page_name + "-" + page_qualifier + " [" + request_type + "]"
    | eval has_open_sockets = if ( ifnull(NotClosedSockets,0) > 0, 1, 0)
    | eval has_open_files = if ( ifnull(NotClosedFiles,0) > 0, 1, 0)
    | eval time = strftime( _time, "%Y-%m-%d %H:%M:%S" )
    | eval server = ifnull(servername, host)
    | rex field=server "\w(?<dc>\d+)\w"
    | eval dc_name = "DC" + tostring(dc)
    | eval server_type = if (substr(server, 1, 2) = "pc", "PROD", if (substr(server, 1, 2) = "sc", "PREVIEW", if (substr(server, 1, 2) = "ac", "QA", "OTHER") ) )
    | eval dc_company_user =  dc + "|" + company_id + "|" + sha256( user_id )

| table
     time,
     dc_name,
     server_type,
     dbpool,
     company_id,
     full_page_name,
     dc_company_user,
     server_time,
     end2end_time,
     SQLInvokes,
     SQLTimeTotal,
     MemoryAllocated[![enter image description here][6]][6]

Edit4:

从txt文件中读取的代码也是读取\n。因此该字符串中有 \n ,我猜想当发送到 WebDriver 在搜索框中运行时可能会导致问题。可以阅读上面编辑中的代码吗?

'sourcetype=perf_log_bizx\n(host=pc*bcf* OR host=pc*bsfapi* OR servername=pc*bcf* OR servername=pc*bsfapi*) OR\n(host=sc*bcf* OR host=sc*bsfapi* OR servername=sc*bcf* OR servername=sc*bsfapi*) OR\n(host=ac*bcf* OR host=ac*bsfapi* OR servername=ac*bcf* OR servername=ac*bsfapi*) OR\nNOT "/perfLogServlet" NOT "REQ-\\[*" earliest="12/18/2018:08:00:00" latest="12/18/2018:12:00:00" \n \n | rex field=_raw "\\[(?<client_ip>[\\d\\.]+)\\]\\s+\\[(?<company_id>[^,]+),(?<company_name>[^,]+),(?<company_schema>[\\w\\.]+),(?<dbpool>[^,]+),(?<user_id>[^,]+),\\S+\\]\\s+\\S+\\s+\\S+\\s+(?<render_time>\\d+)\\s(?<server_time>\\d+)\\s(?<end2end_time>\\d+)\\s+\\S+\\s\\S+\\s\\[.*\\]\\s+\\d+\\-(?<call_id>\\d+)\\s+(?<module_id>(-|\\w+))\\s(?<page_name>(-|\\w+))\\s(?<page_qualifier>(-|\\w+))"\n | rex field=_raw "\\[\\[(?<MemoryAllocated>\\d+)\\w+\\s+(?<CPUTimeTotal>\\d+)\\w+\\s+(?<CPUTimeUser>\\d+)\\w+\\s+(?<CPUTimeSystem>\\d+)\\w+\\s+(?<FileRead>\\d+)\\w+\\s+(?<FileWrite>\\d+)\\w+\\s+(?<NetworkRead>\\d+)\\w+\\s+(?<NetworkWrite>\\d+)\\w+\\s+(?<NotClosedFiles>(\\d+|-))\\s+(?<NotClosedSockets>(\\d+|-))\\s+\\]\\]\\s+(?<SQLInvokes>\\d+)\\s+(?<SQLTimeTotal>\\d+)"\n \n | eval company_id = ifnull(CMID, company_id)\n | eval dbpool = ifnull(DPN, dbpool)\n | eval company_schema =ifnull(SN, company_schema)\n | eval user_id = ifnull(UID, user_id)\n \n | eval module_id = ifnull(MID, module_id)\n | eval page_name = ifnull(PID, page_name)\n | eval page_qualifier = ifnull(PQ, page_qualifier)\n \n | rex field=CAID "\\d+\\-(?<CAID>\\d+)"\n | eval call_id = ifnull(CAID, call_id)\n \n | eval render_time = ifnull(RDT, render_time)\n | eval server_time = ifnull(SVT, server_time)\n | eval end2end_time = ifnull(EET, end2end_time)\n | eval MemoryAllocated = ifnull(MEM, MemoryAllocated)\n | eval CPUTimeTotal = ifnull(CPU, CPUTimeTotal)\n | eval CPUTimeUser = ifnull(UCPU, CPUTimeUser)\n | eval CPUTimeSystem = ifnull(SCPU, CPUTimeSystem)\n | eval FileRead = ifnull(FRE, FileRead)\n | eval FileWrite = ifnull(FWR, FileWrite)\n | eval NetworkRead = ifnull(NRE, NetworkRead)\n | eval NetworkWrite = ifnull(NWR, NetworkWrite)\n | eval NotClosedFiles = ifnull(0, NotClosedFiles)\n | eval NotClosedSockets = ifnull(0, NotClosedSockets)\n | eval SQLInvokes = ifnull(SQLC, SQLInvokes)\n | eval SQLTimeTotal = ifnull(SQLT, SQLTimeTotal)\n \n | eval request_type = if(call_id=0,"Root", "Subaction")\n \n| search call_id = 0 AND page_name!="NONE"\n \n | eval full_page_name = module_id + "-" + page_name + "-" + page_qualifier + " [" + request_type + "]"\n | eval has_open_sockets = if ( ifnull(NotClosedSockets,0) > 0, 1, 0)\n | eval has_open_files = if ( ifnull(NotClosedFiles,0) > 0, 1, 0)\n | eval time = strftime( _time, "%Y-%m-%d %H:%M:%S" )\n | eval server = ifnull(servername, host)\n | rex field=server "\\w(?<dc>\\d+)\\w"\n | eval dc_name = "DC" + tostring(dc)\n | eval server_type = if (substr(server, 1, 2) = "pc", "PROD", if (substr(server, 1, 2) = "sc", "PREVIEW", if (substr(server, 1, 2) = "ac", "QA", "OTHER") ) )\n | eval dc_company_user = dc + "|" + company_id + "|" + sha256( user_id )\n \n| table\n time,\n dc_name,\n server_type,\n dbpool,\n company_id,\n full_page_name,\n dc_company_user,\n server_time,\n end2end_time,\n SQLInvokes,\n SQLTimeTotal,\n MemoryAllocated'


您应该将密钥发送至input领域,但不是父母div。请尝试以下操作:

content_box = driver.find_element_by_css_selector("div.ace_content input")
content_box.send_keys(code_file, Keys.ENTER)

or

content_box = driver.find_element_by_class_name('ace_text-input')
content_box.send_keys(code_file, Keys.ENTER)

另请注意,您很可能不需要使用Actions

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

无法保持对 Selenium Python 驱动程序中元素的关注 的相关文章

  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 通过最小元素比较对 5 个元素进行排序

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

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 有没有办法检测正在运行的代码是否正在上下文管理器内执行?

    正如标题所述 有没有办法做到这样的事情 def call back if called inside context print running in context else print called outside context 这将
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip

随机推荐

  • 有些控件没有绘制,看似随机

    我正在尝试为自己编写一个小 MFC 应用程序 以测试我正在训练的一些人工智能 因此 我添加了一个图片控件和一个静态控件 我可以在主窗口的 OnPaint 方法中自由地绘制内容 当只绘制一次应用程序时 它似乎可以工作 但我现在添加了一个在停止
  • 如何获取张量的值? Python

    在进行一些计算时 我最终计算出average acc 当我尝试打印它时 它输出 tf Tensor 0 982349 shape dtype float32 我如何获得0 98 它的值并将其用作普通浮点数 我想做的是将其中的一堆放在一个数组
  • 为什么标准输出不能被替换?

    出于教育目的 我尝试替换标准流 stdout stdin 和 stderr 我首先查找流的数据类型 我追溯到具有以下成员的 struct IO FILE gdb ptype IO FILE type struct IO FILE int f
  • FreeMarker 模板错误:以下内容已计算为 null 或缺失 |但事实并非如此

    我面临的错误是如此奇怪 一切看起来都很好 但是当浏览器向服务器发送 GET 请求时 我收到此错误 我想做的实际上是捕获 HTTP 参数 将它们保存在发送到 Freemarker 模板的 ArrayList 中保存的对象中 请你帮助我好吗 多
  • 计算 CRC 初始值而不是将 CRC 附加到有效负载

    我实现的大部分 CRC 都是追加计算出的 CRC 值到消息 有效负载 并在所有字节 包括 之后在接收器处检查零结果 CRC 值通过 CRC 寄存器输入 显然这是一个相当标准的方法 现在我想使用不同的方法 根据有效负载计算一个值 使用该值作为
  • 创建一个接受 POST 和 GET 的 Jax-RS RESTful 服务?

    我正在将现有的一项服务转变为 RESTful 并且我已经掌握了使用 RestEasy 的基本功能 我的一些客户端应用程序应该能够对多个服务执行 GET 和 POST 请求 我只是在寻找是否有任何简单的方法可以绕过 jax rs 来指定 AP
  • 我应该从 getFft 看到什么样的输出?

    好吧 我正在努力创建一个 Android 音频可视化应用程序 问题是 我从 getFft 方法中得到的结果与谷歌所说的它应该产生的结果不一致 我一直追溯到 C 源代码 但我对 C 或 FFT 不够熟悉 无法真正理解正在发生的事情 我将尝试包
  • sifr3 - 预取不起作用?

    我在启用 sifr 3 的网站的加载时间 大小方面遇到问题 并发现在我的应用程序中多次请求字体 swf 这可以在 firebug 的网络选项卡以及 apache 日志中看到 On http novemberborn net flash pr
  • 如何在Castle.DynamicProxy中使用IInterceptor?

    我写了一个这样的例子 简单计算器类 public class Calculator public int Add int a int b return a b 实现了DynamicProxy提供的 IInterceptor Serializ
  • 为什么“reset_index(drop=True)”函数会意外删除列?

    我有一个名为的 Pandas 数据框数据匹配 它包含 worker id unit id 和 caption 列 请参阅随附的屏幕截图 了解此数据框中的某些行 假设索引列不是按升序排列 我希望索引为 0 1 2 3 4 n 并且我希望它按升
  • 在 PubNub Swift 中访问 PNMessageResult

    请参阅此链接 http www pubnub com blog realtime ios apps getting started with swift and pubnub 基于以下功能我能够收到响应 func client client
  • Java MySQL 更新查询

    我收到错误 无法发出数据 这里是SSCCE package mysqltest import java awt import java awt event import javax swing import java applet Appl
  • 使用 Angular 5 分析 asp.net core 2(Web api)

    我正在寻找以下环境的分析解决方案 有人可以建议吗 net471 上的 ASP NET Core 2 实体框架 6 2 0 角度 5 0 0 我调查了迷你分析器 Glimpse Glimpse 尚未升级至 Core 2 0 MiniProfi
  • 实现最快运行时间的算法(问题、解决)

    对于算法竞赛训练 不是家庭作业 我们在过去一年中收到了这个问题 将其发布到此站点是因为其他站点需要登录 这就是问题 http pastehtml com view c5nhqhdcw html http pastehtml com view
  • 如何使用 NodeJS 创建流 API

    您将如何创建一个流 APINode http nodejs org 就像Twitter 流媒体 API http apiwiki twitter com Streaming API Documentation 我最终想做的是从FriendF
  • 如何克隆 Date 对象?

    分配一个Date变量到另一个变量会将引用复制到同一实例 这意味着改变一个就会改变另一个 我怎样才能真正克隆或复制Date实例 Use the Date https developer mozilla org en Core JavaScri
  • flutter android main 函数被调用两次

    在我的 flutter 应用程序中 我注意到 main 函数执行了两次 我正在使用计数器应用程序中的示例代码 文本main function被打印两次 我的 AndroidManifest xml 如下
  • 更改前缀后 npm 没有响应

    我最近尝试通过 npm 更新 IONIC CLI 安装成功了几次 但 CLI 版本没有改变 经过研究 我决定更改 npm 前缀 然后 IONIC strated 抛出 bash IONIC 命令未找到 然后我做了进一步的研究 之后我通过 w
  • “强制停止”将 Activity 留在其生命周期的哪个位置?

    假设我的应用程序已启动并正在运行 然后我进入我的设备主屏幕 导航设置 gt gt 应用程序 gt gt 管理应用程序 选择我的应用程序 然后按Force stop Which Activity下次打开应用程序时会调用方法吗 在我因不检查自己
  • 无法保持对 Selenium Python 驱动程序中元素的关注

    我试图通过 python 控制网络来运行脚本并下载相应的 csv 文件 以下是网页的外观 其中包含仪表板菜单 可单击 搜索 其他按钮 单击 搜索 按钮后 它会显示一个 搜索 文本框 可以在其中输入代码并按 Enter 键运行 现在我需要找到