我正在自动化的页面有一个dxheViewArea。我想在这个领域输入一些文字。
我的Webdriver代码是:
d.FindElement(By.CssSelector(".dxheDesignViewArea dxheViewArea")).SendKeys("Who invented the first fixed witn aircraft?");
我在NUnit中运行它,返回的错误是无法找到元素:{"method":"css selector","selector":".dxheDesignViewArea dxheViewArea"}
在Firefox中我检查元素,代码是:
<body class="dxheDesignViewArea dxheViewArea" style="border-width: 0px;" spellcheck="false"/>
我可以使用什么Xpath语法来查找并输入此元素中的某些文本?
完整的来源是:
<style/>
<link href="/DXR.axd?r=4_1" type="text/css" rel="stylesheet"/>
<style charset="utf-8" type="text/css">xxxxxxxx</style>
<style id="firepath-matching-node-style" type="text/css">.firepath-matching-node { outline: 2px dashed #00F;}</style>
</head>
<body class="dxheDesignViewArea dxheViewArea" style="border-width: 0px;" spellcheck="false"/>
</html>
答案 0 :(得分:2)
您应该将两个CSS类限定为类。你所做的只是第一个。试试这个:
d.FindElement(By.CssSelector(".dxheDesignViewArea.dxheViewArea")).SendKeys("Who invented the first fixed witn aircraft?");
答案 1 :(得分:2)
我认为你应该找到包含指定字段的WebElement:
WebElement container = driver.findElement(By....); // locate the WebElement that contains the input field.... by cssselector or xpath
container.findElement(By.xpath("//*[@class='dxheDesignViewArea dxheViewArea']")).SendKeys("Who invented the first fixed witn aircraft?");
更新:没有完整的html代码就不那么容易,但我找到了driver.switchTo()方法:
WebElement iframe = driver.findElement(By.xpath("//*[@id='...']")) // locate the iframe
driver.switchTo().frame(iframe);
.... // find elements
driver.switchTo().defaultContent();
参考文献:
答案 2 :(得分:0)
试试这个
driver.findElement(By.className("dxheDesignViewArea dxheViewArea")).sendKeys("Who invented the first fixed witn aircraft?");
答案 3 :(得分:0)
我一直在尝试这些建议,但仍未成功。 我已经检查了更多的代码,并注意到有一个iFrame。 这是因为iFrame无法找到元素。
以下是代码段。我现在可以使用什么Xpath来定位class =“dxheDesignViewArea dxheViewArea”
<iframe id="ctl00_uxContentPlaceHolderContent_uxQuestionHTMLTextEditor_uxQuestionHTMLTextEditor_editor_DesignIFrame" class="dxheDesignViewArea dxheViewArea" frameborder="0" style="height: 100%; width: 100%; padding: 0px; border-style: none; border-width: 0px;" src="javascript:false" name="ctl00_uxContentPlaceHolderContent_uxQuestionHTMLTextEditor_uxQuestionHTMLTextEditor_editor_DesignIFrame">
答案 4 :(得分:0)
我终于设法让它工作了。它是在iFrame中。这是我使用的代码。
IWebElement iframe = driver.FindElement(By.Id("ctl00_uxContentPlaceHolderContent_uxQuestionHTMLTextEditor_uxQuestionHTMLTextEditor_editor_DesignIFrame"));
driver.SwitchTo().Frame(iframe);
driver.FindElement(By.XPath("//body[@class='dxheDesignViewArea dxheViewArea']")).SendKeys("Who invented the first fixed wing aircraft?");
driver.SwitchTo().DefaultContent();