- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Selenium WebDriver,要一次获取 C# 中标签的所有 html 属性,我这样做
ReadOnlyCollection<object> HtmlAttributes = (ReadOnlyCollection<object>)((IJavaScriptExecutor)Driver).ExecuteScript("var s = []; var attrs = arguments[0].attributes; for (var l = 0; l < attrs.length; ++l) { var a = attrs[l]; s.push(a.name + ':' + a.value); } ; return s;", ele);
但是通过这段 JavaScript 代码,我得到了一个包含值的数组:
HtmlAttributes[index] = "HtmlAttribute:Value".
是否可以获得哈希表?例如:
HtmlAttributes[HtmlAttribute] = "Value"
最佳答案
为什么下面的方法不起作用?
// Putting this all on one line would work just fine; I'm
// breaking it out here for readability.
string script =
@"var s = {};
var attrs = arguments[0].attributes;
for (var index = 0; index < attrs.length; ++index) {
var a = attrs[index];
s[a.name] = a.value;
}
return s;";
// Direct casting would work in a single line as well.
// Again, using the "as" operator and multiple lines for
// readability.
// ASSUMPTIONS: "driver" is a valid IWebDriver object, and
// "element" is a valid IWebElement object found using FindElement.
IJavaScriptExecutor executor = driver as IJavaScriptExecutor;
Dictionary<string, object> attributes = executor.ExecuteScript(script, element) as Dictionary<string, object>;
现在,对此有一些注意事项。第一个是来自 ExecuteScript
的序列化器不能很好地递归过于复杂的对象。这意味着如果某个属性将对象作为其值,则这可能不会像您希望的那样工作。举个例子,我不会尝试从 JavaScript 序列化 jQuery 对象。另一个警告是返回类型将是 Dictionary<string, object>
。如果你想创建一个Hashtable
,或将值转换为字符串,您必须在从 JavaScript 获取值后自行转换这些值。
关于c# - 如何使用 Selenium ExecuteScript 函数获取 HashTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18595825/
我的问题是关于脚本文件运行的顺序(顺序)。 我调用一个名为“aaa.js”的脚本文件,并作为 executeScript 的回调,我有文件脚本“bbb.js”,如下所示是以下草图代码: chrome.
我正在使用 Ionic 和 ngCordova 创建构建混合应用程序。在应用程序登录工作流程中,我将一个页面从服务器返回到 InAppBrowser 插件。我需要从 Ionic 应用程序的返回页面中读
我正在编写一个Chrome扩展程序,需要根据某些给定参数修改特定域中的页面,这需要XSS才能获取,因此简单地使用内容脚本似乎是不可能的。因此,我决定使用 tabs.executeScript 注入(i
我正在尝试将值放入新选项卡上的元素中,然后单击“提交”登录。我尝试了很多变体,但似乎无法让它发挥作用。 function injectScript(){ var script = ' var e =
如何将参数传递到 browser.executeScript static sortableDragAndDropByClassName(dragElementClassName: string,
目前我正在使用以下代码将警报语句注入(inject)网页,打印出我传入的变量。脚本如下: //Inject statement setting the variable "count" in th
我正在编写一个 JavaFX 应用程序,它使用 WebView 和 WebEngine(.executeScript() 方法)与 JavaScript 交互。 在这里,我有来自 Medow.java
所以我有一个正在编写的扩展程序,我试图在用户单击 pageAction 图标时执行脚本。单击图标时,该方法调用 chrome.tabs.executeScript(...)。问题是 chrome.ta
我正在尝试从后台脚本向选定的选项卡上下文中注入(inject)一些代码,但我遇到了一些权限问题。 list .json { "manifest_version": 2, "name": "pr
是否可以将匿名函数传递给 chrome API executeScript 调用?目前我有以下代码: chrome.tabs.executeScript(tab.id, {code: "documen
我有一个应用程序,它使用 WebView 及其支持的 WebEngine 来显示具有一些 JavaScript 函数的简单网页。我还有另一个线程,有时会从互联网接收消息。我希望它们使用 webengi
我想为我的单元测试加载 SQL 脚本文件。当我使用 Spring 2.5.2 时,我 decided使用 SimpleJdbcTestUtils.executeScript()使用以下代码加载我的脚本
我希望在测试期间使用 browser.executescript 动态设置一些数据。像这样的东西: var x; browser.executeScript(function () { var s
我正在尝试使用 Groovy 登录 ExecuteScript 组件。每当我调用 log.info 时,没有任何内容写入 nifi-app.log,但是当我调用 log.errorit 时。是否有一些
为什么 Chrome 的这个功能不起作用?我正在尝试这个例子: https://developer.chrome.com/docs/extensions/mv3/content_scripts/#pr
我在点击事件中有这个代码 let browser = new InAppBrowser('http://example.com/test', '_self'); browser.executeScri
我正在尝试编写一个 chrome 扩展,它有一个名为“btn3”的按钮。当我在 chrome 扩展 (popup.html) 中点击那个按钮时,它会点击网页上的一个按钮。网页上的按钮具有以下 id:“
我正在尝试学习一些有关 javascript 的知识,并遇到了这个问题。基本上我想做的是获取 url ,重定向到代码中的站点并将其放在文本框中并激活按钮并不是说所有这些都是为了获得答案,而是作为我的目
这个问题已经有答案了: "Cannot read property of undefined" when using chrome.tabs or other chrome API in conten
我一直在尝试从 nifi 的 ExecuteScript 处理器中提取数据并将其作为属性附加到流文件。我尝试了很多来源,尤其是 Matt Burgess 的 funnifi 博客上的一个。 以下是我的
我是一名优秀的程序员,十分优秀!