用硒找到div下的p标签?

时间:2017-10-02 14:13:36

标签: c# selenium selenium-webdriver

我有如下的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是一个空字符串

2 个答案:

答案 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'])

希望这会有所帮助。