【问题标题】:Selenium Javascript inserting HTML code into textarea [Issue]Selenium Javascript 将 HTML 代码插入 textarea [问题]
【发布时间】:2017-08-13 17:55:07
【问题描述】:

我正在尝试将 HTML 代码(大约 3000 个字母)插入 Textarea。有.sendkeys,但是速度很慢。所以我搜索并找到了一种将 javascript 与 selenium 一起使用的方法,它运行良好,直到我不得不添加 HTML 代码。我当前的代码:

public void AttributeSet(string id, string value) {
    IJavaScriptExecutor js = (IJavaScriptExecutor)browser;      
    js.ExecuteScript("document.getElementById(\"" + id + "\").value = ('" + value + "');");
}

我意识到它对单行字符串工作得很好,但是对于 多行字符串其中包含引号 "" 的字符串很难.

由于 HTML 代码有一堆 引号,它一直阻止我这样做。到目前为止,我尝试的是更改我的字符串(newlines\n"\")还有一堆我忘记的东西。

有没有简单的方法来做到这一点?如果是,请帮助我,我将不胜感激!

【问题讨论】:

  • 这是什么浏览器?如果它是 IE,则 64 位版本的驱动程序存在已知问题,并且 .sendKeys() 键入速度很慢。 stackoverflow.com/questions/27985300/…
  • @JoshuaBurns 嗨 Joshua,它仍然会很慢,因为它包含大量字符,这就是为什么我更喜欢立即更改区域的值。
  • 似乎您可以在插入之前转义所有问题字符。您的具体问题是什么?
  • @JeffC 我想要做的就是使用 javascript 将大量的 htmlcode 插入到带有 selenium 的 textarea 中。我的问题是由于多行而导致错误,我假设是因为引号、\'s 等。
  • 在您缩小问题范围之前,我们无法提供真正的帮助。您尚未提供示例字符串或错误消息或其他任何内容。将字符串分解成更小的部分并插入每个部分,直到遇到问题。找到问题字符并替换它。继续下一部分。

标签: javascript c# selenium selenium-webdriver


【解决方案1】:

我想通了,您添加对 System.Web 的引用,然后继续对字符串进行编码

HttpUtility.JavaScriptStringEncode(value);

感谢所有尝试提供帮助的人。

【讨论】:

    【解决方案2】:

    您使用什么浏览器?如果您使用的是任何现代浏览器,它应该支持 es6 多行字符串。

    为了使用多行字符串,将单引号字符'改为反引号`。

    js.ExecuteScript("document.getElementById(\"" + id + "\").value = (`" + value + "`);");
    

    【讨论】:

    • 嗨,Randall,我正在使用 PhantomJS(无头浏览器)我马上试试你说的,提前谢谢 :)
    • 兰德尔,不幸的是它没有用。现在不是多行的字符串也不再起作用了。 {“errorMessage”:无效字符:'`'。
    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 2013-03-31
    • 2021-12-26
    • 2016-10-21
    相关资源
    最近更新 更多