我正在尝试检查页面上的文本,当我检查它时,我看到了:
< div class="welcome-message">
< h1 data-bind="text: $.t('wfo.Common:wfo.Welcome'), attr: { title: $.t('wfo.Common:wfo.Welcome') }" title="Welcome">Welcome</h1>
在我的代码中,我使用Xpath来查找元素,然后尝试验证这个
Assert.IsTrue(AdminPage.IsAt, "Not In Admin Page");
通过实施以下代码:
public static bool IsAt {
get{
var h3 = Driver.instance.FindElements(By.XPath("//div[@class='welcome-message']/h1[@title='Welcome']"));
if (h3.Count >0)
return true;
return false;
}
}
但是当我运行案例时,我遇到了失败:&#34; Not In Admin Page&#34;看到错误信息。
我要做的是根据搜索条件返回一个IwebElements列表,并且在找到该元素时应该返回一个真实的响应,直到现在,我假设我想匹配&#34;真&#34;标准。我是Selenium的新人,非常感谢你对此的帮助,非常感谢。
答案 0 :(得分:0)
我会研究一些事情:
尝试使用h1中的contains选项:
//div[@class="'welcome-message']/h1[contains(@title='Welcome')
Xpath通常是find元素方法中最不可靠的,如果该选项可用,则使用ID,classname甚至CSS选择器会更好。显然有时这是不可能的。
By.ClassName('welcome-message');
混合所有并过滤掉孩子们。
IWebElement parent = Driver.FindElement(By.CssSelector("div[class='welcome-message']));
IWebElement child = parent.FindElement(By.XPath(".//h1[@title='Welcome]"));
答案 1 :(得分:0)
试试这个:
public static bool IsAt {
get{
var h3 = Driver.instance.FindElements(By.CSSSELECTOR("div.welcome-message>h1[title='Welcome']"));
if (h3.Count >0)
return true;
return false;
}
}
答案 2 :(得分:0)
我不确定..但我认为发生此错误是因为您的方法“ IsAt”是静态,请删除此修饰符,然后重试
答案 3 :(得分:0)
非常感谢@cruisepandey。我用过它并经历了它:
<input type="checkbox" name="subject[]" value="Subject-1+Subject-2">Subject-1+Subject-2
<input type="checkbox" name="subject[]" value="Subject-1+Subject-2+Subject-3">Subject-1+Subject-2+Subject-3
<input type="checkbox" name="subject[]" value="Others">Others
<input type="submit" value="Submit" name="submit" class="wpcf7-submit"><br><br>
当我更换您的
“如果”条件(h3.Count> 0)为(h3!= null);
我也得到了预期的结果。
“ FindElements”应返回符合搜索条件的项目列表,而我不仅不确定为什么if(h3.Count> 0)在这种情况下不起作用?