【问题标题】:How can I add another line to an existing line - using JavaScript?如何在现有行中添加另一行 - 使用 JavaScript?
【发布时间】:2017-06-12 10:25:13
【问题描述】:

问题: 我正在使用 Selenium - C# 编写一些功能测试。 我必须在代码镜像文本区域中添加两条 CSS 行。似乎我只能在我的 C# 代码中使用 Javascript 来完成它,方法是使用 class= CodeMirror 定位主“div”。即shown in this image

但是当我使用此代码执行此操作时:

  IJavaScriptExecutor js = (IJavaScriptExecutor) Driver;

        string ExistingCSS=null;

        for (int i = 0; i < table.RowCount; i++)
        {
            ScrollIntoView(Driver.FindElement(By.ClassName("CodeMirror")));
            ExistingCSS = ExistingCSS + Driver.FindElement(By.ClassName("CodeMirror")).FindElements(By.ClassName("CodeMirror-line"))[i].Text;
            Console.WriteLine(" Existing CSS -> "+ ExistingCSS);

            js.ExecuteScript("arguments[0].CodeMirror.setValue(\"" + ExistingCSS + table.Rows[i]["CssValue"] + "\")", Driver.FindElement(By.ClassName("CodeMirror")));

        };

它会添加这些行,但下次我运行相同的代码时,它会覆盖在该代码镜像文本区域中写入的内容。

帮助? 谢谢。 :)

【问题讨论】:

  • 你的ExistingCSS呢??
  • ExistingCSS 在执行开始时设置为 Null,但在循环中的第一次迭代之后:值将是 CSS 代码,将从另一个文件粘贴输出:第一次迭代 -> 现有 CSS - > 第二次迭代 -> 现有 CSS -> div.questframe { -webkit-border-radius: 40px; -moz-边界半径:40px; : 40px;}
  • Console.WriteLine(" Existing CSS -&gt; "+ ExistingCSS); 你的控制台打印了什么?
  • 这个:现有的 CSS -> 现有的 CSS -> div.questframe { -webkit-border-radius: 40px; -moz-边界半径:40px; : 40px;}

标签: javascript c# css selenium-webdriver codemirror


【解决方案1】:
ExistingCSS = ExistingCSS + Driver.FindElement(By.ClassName("CodeMirror")).FindElements(By.ClassName("CodeMirror-line"))[i].Text;

将上面的行更改如下:

ExistingCSS += ExistingCSS + Driver.FindElement(By.ClassName("CodeMirror")).FindElements(By.ClassName("CodeMirror-line"))[i].Text;

【讨论】:

  • 不工作 - 结果和以前一样。输出到 codemirror textarea 是:div.questframe { -webkit-border-radius: 40px; -moz-border-radius: 40px; : 40px;}.NextBackSendButtons input { -webkit-border-radius: 40px; -moz-border-radius: 40px; border-radius: 40px;}
【解决方案2】:

我通过做一个小“黑客”来修复它 - 我找到了 style.display = none 的 Textarea。 - 我将它的值更改为 Block:js.ExecuteScript("document.getElementById('CustomCssArea').style.display = 'block'"); -> 所以它是可见的。 - 然后我通过使用“element.SendKeys("CSS Values here..."); 将 CSS 值发送到该文本区域;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-30
    • 2011-03-06
    • 2020-09-30
    • 2010-12-24
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    相关资源
    最近更新 更多