问题: 我正在使用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")));
};
它添加了行,但下次运行相同的代码时,它会覆盖代码镜像文本区中的内容。
帮助? 谢谢。 :)
答案 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;