我正在使用Selenium Webdriver和Visual Studio& C#。
我正在测试一个网页,其中包含同一div中的两个子标题。它们是“用户名”和“用户位置”。 我能找到第一个h3
Assert.AreEqual("User Name", driver.FindElement(By.XPath("//form[@id='user-details-form']/h3")).Text);
但是我无法让Selenium找到第二个,因为它总能找到第一个。 如何让它跳过第一个找到第二个?
答案 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);