如何找到div标签中存在的特定文本?

时间:2019-04-25 15:59:03

标签: java selenium

我在下面的div标签列表中,我想从第3个div标签中选择文本“ Entry”。

<DIV class=menuLink style="BORDER-TOP-COLOR: transparent; BACKGROUND: #dcdfec; WHITE-SPACE: nowrap; BORDER-LEFT-COLOR: transparent; BORDER-BOTTOM-COLOR: transparent; BORDER-RIGHT-COLOR: transparent">Start Call</DIV>


<DIV class=menuLink style="BORDER-TOP-COLOR: transparent; BACKGROUND: #dcdfec; WHITE-SPACE: nowrap; BORDER-LEFT-COLOR: transparent; BORDER-BOTTOM-COLOR: transparent; BORDER-RIGHT-COLOR: transparent">Web Pay SR</DIV>


<DIV class=menuLink style="BORDER-TOP-COLOR: transparent; BACKGROUND: #dcdfec; WHITE-SPACE: nowrap; BORDER-LEFT-COLOR: transparent; BORDER-BOTTOM-COLOR: transparent; BORDER-RIGHT-COLOR: transparent">Entry</DIV>


<DIV class=menuLink style="BORDER-TOP-COLOR: transparent; BACKGROUND: #dcdfec; WHITE-SPACE: nowrap; BORDER-LEFT-COLOR: transparent; BORDER-BOTTOM-COLOR: transparent; BORDER-RIGHT-COLOR: transparent">Exit</DIV>

我用过

driver.findElement(By.linkText("Entry")).getText();

我收到以下错误:

  

找不到带有部分链接文本==条目的元素

有人可以帮我解决这个问题吗? TIA!

2 个答案:

答案 0 :(得分:2)

尝试使用Webdriverwait和xpath查找动态元素。

WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[contains(.,'Entry')]")));
element.click()

OR

 WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='menuLink'][contains(.,'Entry')]")));
element.click()

或者您可以使用linkText代替xpath。

答案 1 :(得分:0)

由于该元素是<DIV>元素,因此不能使用 linkText partialLinkText 。因此,您看到的错误为:

Unable to find element with partial link text == Entry

要在文本为 Entry 的元素上click(),您需要为 elementToBeClickable 引入 WebDriverWait ,您可以使用以下Locator Strategies中的

  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='menuLink' and text()='Entry']"))).click();