Selenium Web Driver& C# - 在div

时间:2016-06-07 10:37:55

标签: c# selenium webdriver

我正在使用Selenium Webdriver和Visual Studio& C#。

我正在测试一个网页,其中包含同一div中的两个子标题。它们是“用户名”和“用户位置”。 我能找到第一个h3

 Assert.AreEqual("User Name", driver.FindElement(By.XPath("//form[@id='user-details-form']/h3")).Text);

但是我无法让Selenium找到第二个,因为它总能找到第一个。 如何让它跳过第一个找到第二个?

3 个答案:

答案 0 :(得分:1)

您可以通过提供以下文字找到目标元素: -

Assert.AreEqual("User Name", driver.FindElement(By.XPath("//form[@id='user-details-form']/h3[contains(text(),'User Name')]")).Text);

希望它能帮助您找到User Name子标题......:)

答案 1 :(得分:0)

我从不使用XPATH ......

var h3s = wd.findElements(By.TagName("h3")).Where(p=>p.Text=="SomeValue").ToList();

注意:您可能有多个逻辑,因此正确的逻辑需要。

答案 2 :(得分:0)

除非绝对必要,否则最好避免使用XPath。在这种情况下,我会使用css选择器来获取所有h3元素的集合,然后如果你知道它的位置就可以找到你想要的那个。

List<WebElement> list = driver.findElements(By.cssSelector("form#user-details-form h3"));
WebElement e = list.get(5);
Assert.AreEqual("User Name", e.Text);