如何使用 C# 检查 Selenium 中开关切换的状态
How to check state of a switch toggle in Selenium using c#
我正在尝试使用 selenium 验证开关是否打开或 'off',但我似乎做错了。在加载网页时切换设置为开启位置,但在关闭时过滤结果为 table 等。它工作正常我只是检查获取我的硒测试以获取其当前状态。
- element.Selected;始终 returns false(关于切换位置)
- element.Enabled;总是 returns 真(关于切换位置)
- 字符串测试=myToggle.GetAttribute("class"); returns 文本 "slider round" 没有帮助
- 字符串测试1 = myToggle.GetAttribute("checked");为空
- 字符串测试2 = myToggle.GetAttribute("value");为空
代码如下:
<label class="switch">
<input type="checkbox" id="myToggle" checked />
<span class="slider round"></span>
</label>
检查切换位置并加载 table 数据的代码:
if (Amt == currentAmt ) {
if ($("#myToggle").prop("checked") == true) {
loadMyProducts('NAN', $("#total").val());
}
我现在的测试是这样的
[FindsBy(How = How.XPath, Using = "//*[@id='divTestAcc']/div[1]/p[9]/label/span")]
public IWebElement myToggle { get; set; }
public Boolean CheckMyToogleIsOnorOFF()
{
string test = myToggle.GetAttribute("class");
Console.Write("checking "+ test);
// string test1 = myToggle.GetAttribute("checked");
//string test2 = myToggle.GetProperty("checked");
// .Selected always returns false
// .Enables always returns true
Boolean result;
result = myToggle.Enabled;
bool result1 = myToggle.Selected;
if (result == true)
{
Console.WriteLine("My toggle is enabled");
}
else
{
Console.WriteLine("My toggle is not enabled");
}
return result;
}
// is it checked?
var isChecked = driver.FindElement(By.XPath("//input[@type='checkbox']").Selected;
使用 .Selected
属性应该可以实现您的目标。我添加 driver.FindElement
语句的原因是为了确保您找到正确的元素——根据您的问题描述,我不确定您找到并测试的元素是否正确。
正如另一位用户指出的那样,如果 GetAttribute("class")
returns slider round
,那么您在这里查看的元素是错误的。确保首先找到 input
元素。
您的文件头 //*[@id='divTestAcc']/div[1]/p[9]/label/span
处的 XPath 将定位 span
元素,而不是 input
-- input
是带有 checked
的元素,所以这就是我们需要测试的。
我正在尝试使用 selenium 验证开关是否打开或 'off',但我似乎做错了。在加载网页时切换设置为开启位置,但在关闭时过滤结果为 table 等。它工作正常我只是检查获取我的硒测试以获取其当前状态。
- element.Selected;始终 returns false(关于切换位置)
- element.Enabled;总是 returns 真(关于切换位置)
- 字符串测试=myToggle.GetAttribute("class"); returns 文本 "slider round" 没有帮助
- 字符串测试1 = myToggle.GetAttribute("checked");为空
- 字符串测试2 = myToggle.GetAttribute("value");为空
代码如下:
<label class="switch">
<input type="checkbox" id="myToggle" checked />
<span class="slider round"></span>
</label>
检查切换位置并加载 table 数据的代码:
if (Amt == currentAmt ) {
if ($("#myToggle").prop("checked") == true) {
loadMyProducts('NAN', $("#total").val());
}
我现在的测试是这样的
[FindsBy(How = How.XPath, Using = "//*[@id='divTestAcc']/div[1]/p[9]/label/span")] public IWebElement myToggle { get; set; } public Boolean CheckMyToogleIsOnorOFF() { string test = myToggle.GetAttribute("class"); Console.Write("checking "+ test); // string test1 = myToggle.GetAttribute("checked"); //string test2 = myToggle.GetProperty("checked"); // .Selected always returns false // .Enables always returns true Boolean result; result = myToggle.Enabled; bool result1 = myToggle.Selected; if (result == true) { Console.WriteLine("My toggle is enabled"); } else { Console.WriteLine("My toggle is not enabled"); } return result; }
// is it checked?
var isChecked = driver.FindElement(By.XPath("//input[@type='checkbox']").Selected;
使用 .Selected
属性应该可以实现您的目标。我添加 driver.FindElement
语句的原因是为了确保您找到正确的元素——根据您的问题描述,我不确定您找到并测试的元素是否正确。
正如另一位用户指出的那样,如果 GetAttribute("class")
returns slider round
,那么您在这里查看的元素是错误的。确保首先找到 input
元素。
您的文件头 //*[@id='divTestAcc']/div[1]/p[9]/label/span
处的 XPath 将定位 span
元素,而不是 input
-- input
是带有 checked
的元素,所以这就是我们需要测试的。