我有如下的html标记:
<div class="inline-error-content">
<p>Invalid number.</p>
</div>
这是在屏幕上的电话号码字段中输入字母时呈现的验证标记。我正在编写一个Selenium回归测试来验证这是否有效 - 但是,我不确定如何在没有id或类名的情况下获取p标记。我真的不想找到XPath渲染的所有p标签,因为会有多个返回。
我正在尝试下面的代码
Driver.FindElement(By.Name("telephoneNumber")).SendKeys("abc");
Thread.Sleep(2000);
var result = Driver.FindElement(By.XPath("//div[contains(@class, 'inline-error-content')]"));
结果上的.Text
是一个空字符串
答案 0 :(得分:1)
首先,如果要查看<p>
的文本,请使用xpath选择它:
By.XPath("//div[contains(@class, 'inline-error-content')]/p")
另外,在测试中睡觉通常是一个坏主意。请改用Wait and Expected Condition:
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(2));
IWebElement myDynamicElement = wait.Until<IWebElement>(d => d.FindElement(By.XPath("//div[contains(@class, 'inline-error-content')]/p")));
答案 1 :(得分:0)
p标签是“无效号码”。文本?如果是这样,您可以使用直接的XPath,如下所示:
By.XPath("//div[contains(@class, 'inline-error-content')]/p[text()='Invalid number'])
你甚至可以扫描所有p标签,只考虑没有带有无效数字文本的p节点就找到单个记录。
By.XPath("//p[text()='Invalid number'])
希望这会有所帮助。