Selenium Web Driver & C# - 在 <h3> A div 中选择第二个



我正在Visual Studio中使用Selenium Web驱动程序&C#。

我正在测试一个网页,该网页在同一个div中包含两个子标题。它们是"用户名"one_answers"用户位置"。我能够找到第一个h3

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

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

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

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

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

除非绝对必要,否则最好避免使用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);

我从不使用XPATH。。。

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

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

最新更新