我在下面的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!
答案 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();