Webdriver无法找到dxheViewArea的正确xpath

时间:2014-05-05 11:21:45

标签: c# xpath selenium-webdriver

我正在自动化的页面有一个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>

5 个答案:

答案 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();