无法使用C#webdriver单击作为IFrame一部分的按钮

时间:2013-01-09 13:48:50

标签: c# firefox selenium-webdriver

我为我的Visual Studio 2010配置了c#webdriver。我想在iframe上点击“安装”按钮。我正在编写c#代码,点击此IFrame中的“安装”按钮。

这是HTML代码......

<html>
<head></head>
<body>
<"pt1:pt2:mvtiframe" class="gradbg af_inlineFrame p_AFFlow" frameborder="0"   onload="AdfDhtmlInlineFramePeer.__iframeLoadHandler(event)" src="some url" style="width:700px; height:360px" _adfloaded="1">
<html>
<tr>
<td style="text-align: left; height: 35px" colspan="3">
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td>
<p>
<a class="imageButton" onclick="OnNextButtonClick()" target="_blank" href="http://google.com/abc.asp">
<span>Install</span>
</a>
</p>
</td>
</tr>
</html>
</iframe>
</body>
</html>

我正在尝试使用以下代码点击“安装”按钮。但是不起作用。它说找不到元素。

FirefoxDriver driver = new FirefoxDriver();
driver.SwitchTo().Frame(0);
driver.FindElement(By.Name("Install")).Click();

尝试使用Xpath,但我没有得到安装按钮的Xpath,它是IFrame的一部分。

1 个答案:

答案 0 :(得分:1)

这里的问题是元素的“名称”不是“安装” 安装是按钮的文本。

我会像这样尝试一些Xpath:"//a[@class='imageButton']"

driver.FindElement(By.Xpath("//a[@class='imageButton']")).Click();

如果这是您的页面源,您应该能够使用该类找到该元素。 这都是假设您的SwitchTo().Frame正在按预期工作。

另外,如果可能的话,我真的建议在iFrame上添加名称或ID,而不是使用索引。如果页面发生变化,从长远来看会更可靠。