如何使用JavaScript将另一行添加到现有行?

时间:2017-06-12 10:25:14

标签: javascript c# css selenium-webdriver codemirror

问题: 我正在使用Selenium-C#编写一些功能测试。 我必须在代码镜像textarea中添加两个CSS行。看起来我只能在我的C#代码中使用Javascript来定位主要" div" with class = CodeMirror。即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")));

        };

它添加了行,但下次运行相同的代码时,它会覆盖代码镜像文本区中的内容。

帮助? 谢谢。 :)

2 个答案:

答案 0 :(得分:0)

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;

答案 1 :(得分:0)

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