无法处理按钮属性。无法从页面源找到它

时间:2014-09-22 15:59:42

标签: c# selenium selenium-webdriver webdriver

我在处理按钮时遇到了一些问题,尤其是特定的按钮属性。基本上,我的页面上有两个按钮。我需要验证的按钮具有"禁用"的属性。我遇到的问题是我似乎无法处理它 - 它几乎就像它不在那里但它显然在我的网页源中。以下是

下面两个按钮的代码
<button type="button" class="btn-number" data-type="yes" data-field="quant" disabled="disabled"><i class="fht-yes"></i></button>
<a href="#"> Choose flight </a>
<button type="button" class="btn-number" data-type="no" data-field="quant"><i class="fht-no"></i></button>
</div></div>    
</div>

以下是我尝试过的一些事情:

IWebElement ButtonDisabled = Setup.driver.FindElement(By.XPath("//*[@id='box']/div/div[1]/div/button[1]"));
String VerifyButtonDisabled = ButtonDisabled.GetAttribute("outerHTML");

if (VerifyButtonDisabled.Contains("disabled"))
{
    System.Diagnostics.Debug.WriteLine("pass");
}
else
{
   System.Diagnostics.Debug.WriteLine("fail");
}

当我运行它时,我得到以下调试跟踪:

调试跟踪:

<button type="button" class="btn-number" data-type="yes" data-field="quant"><i class="fht-yes""></i></button>

请注意&#34;禁用&#34;属性是否被退回?

我也尝试过直接执行JS

IWebElement ButtonDisabled = Setup.driver.FindElement(By.XPath("//*[@id='box']/div/div[1]/div/button[1]"));

IJavaScriptExecutor js = Setup.driver as IJavaScriptExecutor;
String GetElement = (String)js.ExecuteScript("return arguments[0].outerHTML", ButtonDisabled);
System.Diagnostics.Debug.WriteLine(GetElement);

再一次,我得到了相同的调试跟踪:

调试跟踪:

<button type="button" class="btn-number" data-type="yes" data-field="quant"><i class="fht-yes""></i></button>

我还试图像这样获取整个页面的外部HTML:

String BodyText = Setup.driver.FindElement(By.TagName("body")).GetAttribute("outerHTML");
System.Diagnostics.Debug.WriteLine(BodyText);

值得指出的另一个注意事项是该按钮始终处于启用状态。当我使用&#39;当地人&#39;按钮上的调试工具总是有一个&#34;启用&#34;属性,所以我不能使用.getAttribute(&#34;禁用&#34;)方法验证它。

有没有人有任何想法? :)非常感谢您对此的一些帮助

1 个答案:

答案 0 :(得分:0)

您可以修改XPath表达式以通过禁用属性

进行选择
this.FindElement(By.XPath("//*[@id='box']/div/div[1]/div/button[@disabled='disabled']"));

应该为您启用已禁用属性设置的按钮。

this.FindElement(By.XPath("//*[@id='box']/div/div[1]/div/button[not(@disabled='disabled')]"));

应该为您提供不包含已禁用属性的按钮。

当然假设原始XPath表达式的其余部分是正确的......