可以';t获取按钮属性的句柄.可以';从页面源找不到它

本文关键字:可以 找不到 属性 获取 按钮 句柄 | 更新日期: 2023-09-27 18:24:00

我在获取按钮的句柄,尤其是特定按钮属性时遇到了一些问题。基本上,我的页面上有两个按钮。我需要验证的按钮具有"disabled"属性。我的问题是,我似乎无法处理它——它几乎不在那里,但它显然在我的网页来源中。这是下面两个按钮的代码

<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>

注意到没有返回"disabled"属性吗?

我也尝试过直接执行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);

另一个值得指出的是,该按钮始终处于启用状态。当我在按钮上使用"locals"调试工具时,它总是有一个"enabled"属性,所以我也不能使用.getAttribute("disabled")方法来验证它。

有人有什么想法吗?:)非常感谢您对的帮助

可以';t获取按钮属性的句柄.可以';从页面源找不到它

您可以通过禁用属性来修改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表达式的其余部分是正确的。。。