Selenium C# H5 in DIV



我有:

(1)
<div>
<h5> unique name1</h5>
<div>
<div>
I don't want click this div.
</div>
</div>
</div>
(2)
<div>
<h5> unique name2</h5>
<div>
<div>
I want click this div.
</div>
</div>
</div>

我怎样才能找到要点击硒的div?非常重要的一点是...有时我的div 是 (2( 有时 (3( e.t.c .需要使用h5才能找到它。

要在h5下找到并单击所需的div元素,您可以使用以下XPath:

// declare a wait so we can wait on element to exist
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
// wait for element to exist
var elementToClick = wait.Until(
ExpectedConditions.ElementExists((By.XPath("//h5[text()='unique name2']/following-sibling::div/div"))));
// click element
elementToClick.Click();

由于wait.Until返回正在等待的 WebElement,因此您实际上可以将最后两行合并为一行:

// wait for element to exist, then click
wait.Until(
ExpectedConditions.ElementExists((By.XPath("//h5[text()='unique name2']/following-sibling::div/div")))).Click();

要根据需要在<div>上调用带有文本的click(),请单击此div,您必须诱导WebDriverWaitElementToBeClickable(),您可以使用以下任一定位器策略:

  • 使用XPATH

    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//h5[contains(., 'unique name2')]//following::div[1]/div"))).Click();
    

最新更新