问题标签 [execute-script]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
15 回答
558945 浏览

python - 等到页面用 Selenium WebDriver for Python 加载

我想抓取无限滚动实现的页面的所有数据。以下python代码有效。

这意味着每次向下滚动到底部时,我都需要等待 5 秒,这通常足以让页面完成加载新生成的内容。但是,这可能没有时间效率。页面可能会在 5 秒内完成加载新内容。每次向下滚动时,如何检测页面是否完成加载新内容?如果我能检测到这一点,我可以在知道页面完成加载后再次向下滚动以查看更多内容。这样更省时。

0 投票
2 回答
31866 浏览

javascript - Python 和 Selenium 以“execute_script”解决“ElementNotVisibleException”

我正在使用 Selenium 来保存网页。单击某些复选框后,网页的内容将发生变化。我想要的是单击一个复选框,然后保存页面内容。(复选框由 JavaScript 控制。)

首先我使用:

它以错误结束:

然后我尝试了类似“xpath”的隐式/显式等待:

它给出了一个错误:

帖子

如何强制 Selenium WebDriver 单击当前不可见的元素?

硒元素不可见异常

建议它应该在单击之前使复选框可见,例如使用:

这个问题可能听起来很愚蠢,但是我怎样才能从页面源代码中找到正确的句子来“execute_script”复选框的可见性?

除此之外,还有其他方法吗?

谢谢。

顺便说一句,行 html 代码如下所示:

它的 xpath 看起来像:

0 投票
1 回答
555 浏览

python - 如何使用 selenium 记录 mathjax 加载时间

我正在尝试使用 selenium 获取异步元素(MathJax 方程)加载时间。

我尝试编写一个python-selenium脚本来记录我的网站的加载时间,但是我的网站包含很多由Mathjax异步转换的方程,所以我无法正确记录。

我尝试先使用“performance.timing”记录加载时间,但它只能为我提供“加载时间”。

然后,我尝试找到“MathJax”的 ID 并等待一个 mathjax 元素(例如“MathJax-Element-1-Frame”)被加载

但时间并不是绝对正确的。

0 投票
0 回答
74 浏览

google-chrome-extension - 如何在 Chrome 扩展中使用 tabs.executeScript 传递参数(insertHTML 的值)

我想使用 insertHTML 从 Chrome 扩展的背景页面更改前台页面中的选定文本。

这可行,并用粗体“测试”替换前景页面中的文本:

但是,我不能用变量替换“测试”。

我尝试修改 MDN Web Docs 中的示例:https ://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript

我希望能够插入 COMPARED_TEXT 的值,但是执行的值是未定义的,并且没有抛出错误来说明原因。

0 投票
0 回答
1204 浏览

javascript - 加载 pdf.js 以用于 chrome 扩展的内容脚本

我是 javascript 和 chrome 扩展的新手,所以请放轻松

问题:

我有一个当前处理 html 页面的 chrome 扩展程序,但我也希望它能够在我的 chrome 浏览器中查看时处理在线嵌入的 PDF。因此,我试图在我的内容脚本中访问 pdf.js 库。

基于以前的帖子:Chrome 扩展程序 | 如何在 CDN 的内容和后台脚本中包含库

加载清单

我尝试将库 pdf.js 加载到manifest.json

但是当我加载 chrome 扩展时,它会导致错误“无法加载 manifest.json”。

直接在内容脚本中加载

我还尝试chrome.tabs.executeScript直接在内容脚本中加载库:

但是,这会导致错误: Error in event handler: TypeError: Cannot read property 'executeScript' of undefined at gotMessage

当前设置

目前我的 chrome 扩展设置如下:弹出窗口有一堆复选框和输入字段,它们将生成数据,这将通过后台脚本发送到内容脚本,以告知其行为方式。

可能的解决方案

我想添加一个“复选框”,用于通知加载的文档是 PDF。有了这个,我可以在内容脚本中使用 if 语句将内容页面视为 pdf 并加载pdf.js库。

弹出

背景

内容

总体问题

因此,有谁知道如何在内容脚本中正确加载外部库并随后使用它?

0 投票
1 回答
340 浏览

python - 如何使用 Python 在 Selenium 中解决元素不可点击的问题

我正在测试一个脚本,我在其中运行了大约 200 页。每个页面都包含一个我需要单击的编辑按钮。在大约一半的页面中,这是成功完成的,但在另一半我收到一个错误,说另一个元素会收到点击。

我知道为什么会产生错误,但我不知道如何解决它。

有一个选项卡有时会完全阻止编辑按钮(取决于页面的长度/宽度以及编辑按钮的位置)。

不可点击可 点击

我在类似问题上尝试了很多不同的建议,但我尝试过的没有一个对我有用。特别是这些建议似乎很有希望:

调试“元素不可点击”错误

编辑按钮的 HTML

阻碍选项卡的 HTML

问:是否有可能以某种方式使其不可见?

我拥有的当前代码是:

产生的异常是:

通过使用 driver.execute_script("window.scrollTo(0, 350)") 并将“350”更改为不同的值,我可以使一些按钮可点击。问题是编辑按钮不在所有页面上的同一位置。一种解决方案是使用该函数进行循环,增加 Y 值,同时检查按钮是否可点击/可见。所以我尝试了,但以下代码会产生以下错误:

WebDriverException:未知错误:y 未定义

问:是否可以获取按钮的坐标,然后通过使用例如 driver.execute_script("arguments[0].scrollIntoView();", edit_button)driver.execute_script("window.scrollTo(0, 350)") 但是偏移位置,以便它会在编辑按钮下方稍微滚动?

顺便说一句,我正在使用 chromedriver,但是在尝试 geckodriver 时遇到了同样的问题。

0 投票
2 回答
524 浏览

python-3.x - 使用 Selenium 修改 HTML

我想使用 Selenium(与 Python 3 一起运行)来修改浏览器中的特定 HTML 元素,使其周围有“标记”标签(从而突出显示我感兴趣的文本)。有没有办法做到这一点?

0 投票
1 回答
296 浏览

python - Nifi:执行脚本错误(无法创建非字节值的pystring)

我正在尝试使用 executeScript 处理器解析流文件。基本上,我正在做的是使用 python 脚本拆分流文件内容并从中制作一个 csv。我的样本数据运行良好。但是每条 prod 消息的长度约为 10000 个字符。

为了将其拆分并将流文件转换为 csv,python 代码变得很大。运行这个让我error1。我尝试将其转换为 pyc 文件,然后出现错误 2。

请让我知道我能做些什么来解决这个问题。

错误1

错误2

0 投票
1 回答
686 浏览

javascript - 将 javascript 代码从 storeEval 转换为 executeScript_Sandbox (Selenium Ide Kantu Ui.Vision)

我需要转换两个 javascript 代码以从 storeEval 获取首选格式的日期和时间,以在 Selenium Ide Kantu Ui.Vision 中使用 executeScript_Sandbox

从某些更新中,不推荐使用 storeEval,现在需要使用新命令 executeScript_Sandbox

这里有一些信息: https ://ui.vision/docs/selenium-ide/executescript

我需要将 storeEval 中的 2 个代码转换为与新 Selenium Ide Kantu Ui.Vision 兼容的 executeScript_Sandbox。

我的第一个 storeEval 代码(已弃用)

我的 storeEval 的第二个代码(已弃用)

0 投票
2 回答
2724 浏览

javascript - UnhandledPromiseRejectionWarning: E​​rror: Script failed to execute-Electron 执行脚本

我尝试在电子中执行 JavaScript

如果用户名是一个数字,它可以正常工作,如果用户名是一个字符串,如下所示,它显示错误代码

我尝试了标签,它有同样的问题