问题标签 [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.
python - 等到页面用 Selenium WebDriver for Python 加载
我想抓取无限滚动实现的页面的所有数据。以下python代码有效。
这意味着每次向下滚动到底部时,我都需要等待 5 秒,这通常足以让页面完成加载新生成的内容。但是,这可能没有时间效率。页面可能会在 5 秒内完成加载新内容。每次向下滚动时,如何检测页面是否完成加载新内容?如果我能检测到这一点,我可以在知道页面完成加载后再次向下滚动以查看更多内容。这样更省时。
javascript - Python 和 Selenium 以“execute_script”解决“ElementNotVisibleException”
我正在使用 Selenium 来保存网页。单击某些复选框后,网页的内容将发生变化。我想要的是单击一个复选框,然后保存页面内容。(复选框由 JavaScript 控制。)
首先我使用:
它以错误结束:
然后我尝试了类似“xpath”的隐式/显式等待:
它给出了一个错误:
帖子
如何强制 Selenium WebDriver 单击当前不可见的元素?
建议它应该在单击之前使复选框可见,例如使用:
这个问题可能听起来很愚蠢,但是我怎样才能从页面源代码中找到正确的句子来“execute_script”复选框的可见性?
除此之外,还有其他方法吗?
谢谢。
顺便说一句,行 html 代码如下所示:
它的 xpath 看起来像:
python - 如何使用 selenium 记录 mathjax 加载时间
我正在尝试使用 selenium 获取异步元素(MathJax 方程)加载时间。
我尝试编写一个python-selenium脚本来记录我的网站的加载时间,但是我的网站包含很多由Mathjax异步转换的方程,所以我无法正确记录。
我尝试先使用“performance.timing”记录加载时间,但它只能为我提供“加载时间”。
然后,我尝试找到“MathJax”的 ID 并等待一个 mathjax 元素(例如“MathJax-Element-1-Frame”)被加载
但时间并不是绝对正确的。
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 的值,但是执行的值是未定义的,并且没有抛出错误来说明原因。
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
库。
弹出
背景
内容
总体问题
因此,有谁知道如何在内容脚本中正确加载外部库并随后使用它?
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 时遇到了同样的问题。
python-3.x - 使用 Selenium 修改 HTML
我想使用 Selenium(与 Python 3 一起运行)来修改浏览器中的特定 HTML 元素,使其周围有“标记”标签(从而突出显示我感兴趣的文本)。有没有办法做到这一点?
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 的第二个代码(已弃用)
javascript - UnhandledPromiseRejectionWarning: Error: Script failed to execute-Electron 执行脚本
我尝试在电子中执行 JavaScript
如果用户名是一个数字,它可以正常工作,如果用户名是一个字符串,如下所示,它显示错误代码
我尝试了标签,它有同样的问题