我正在尝试创建一个脚本,在其中可以检查元素是否在UWP应用程序上显示。我有一种方法可以检查元素是显示还是不显示。
如果实际上显示了该元素,并且我调用了“ IsElementDisplayed”,则该测试似乎可以正常工作并继续执行测试。.但是,当该元素实际上未显示并且我调用了“ IsElementDisplayed”时,它不会返回错误的布尔值。.但是它只是停止测试执行并说:“找不到这样的给定参数” ...
请检查我的示例代码。...
我有一个包含定位器并返回WindowsElement实例的类:
protected WindowsElement Id(string id)
{
return Driver.FindElementById(id);
}
protected WindowsElement XPath(string xpath)
{
return Driver.FindElementByXPath(xpath);
}
protected WindowsElement Name(string name)
{
return Driver.FindElementByName(name);
}
protected WindowsElement AccessibilityId(string id)
{
return Driver.FindElementByAccessibilityId(id);
}
然后我有Page类,其中包含我的元素的属性。下面的示例代码:
public WindowsElement SaveObligation_Btn => this.AccessibilityId("OBLGTN_saveObligation_btn");
public WindowsElement CancelObligation_Btn => this.AccessibilityId("OBLGTN_CancelObligation_btn");
public WindowsElement ObligationAdd_Btn => this.AccessibilityId("SMMRY_AddObligation_btn");
最后,我有一个testhelper类,其中包含以下方法:
public bool IsNotDisplayed(WindowsElement element)
{
try
{
Assert.IsFalse(element.Displayed, $"Element: {element} is not displayed on the page!");
return false;
}
catch (Exception)
{
return true;
}
}
但是当我尝试调用“ IsNotDisplayed”方法以返回false(如果它捕获到任何异常)时,。,我的测试执行停止,并且我将遇到一个指向我的Locator类的错误,并说,“ element is not找到具有给定参数的“ ...
我希望方法“ isNotDisplayed”应返回错误的布尔值,以便我可以验证元素是否可见。
答案 0 :(得分:0)
我对C#不熟悉。
但是在Python中,我将这样写:
try:
element = //find your element
if element.is_displayed():
return True
else:
raise AssertionError
except Exception:
return False
答案 1 :(得分:0)
第一个问题是当noElementIsDisplayed时要做什么?当然,它将捕获一些例外。在您的方案中,如果在抛出异常时不想执行任何操作,则应将catch块留空。 尝试以下代码:
public bool IsNotDisplayed(WindowsElement element)
{
try
{
Assert.IsFalse(element.Displayed, $"Element: {element} is not displayed on the page!");
return false;
}
catch (Exception e)
{
// do nothing and it will continue your script.
}
}
答案 2 :(得分:0)
请尝试使用下面的c#代码。这是另一种选择。
private bool IsElementPresent(By by)
{
try
{
driver.FindElement(by);
return true;
}
catch (NoSuchElementException)
{
return false;
}
}
答案 3 :(得分:-1)
如果显示元素,则返回true,否则返回false。
public bool IsNotDisplayed(WindowsElement element)
{
try
{
element.Displayed;
}
catch (Exception)
{
return false;
}
return true;
}
public static boolean IsDispayed(WebElement webelement)
{
try {
webelement.isDisplayed();
} catch (Exception e) {
return false;
}
return true;
}
try:
element = driver.find_element_by_xpath('XPATH')
if element.is_displayed():
return True
else:
raise AssertionError
except Exception:
return False