我有:
(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();