我想在selenium web驱动程序中单击“链接打开”对话框

时间:2016-10-06 14:01:20

标签: javascript selenium selenium-webdriver hyperlink junit4

这是我的Html代码:

<a id="expTo" class="formblue_link padRight10 exportLinkActive" 
      href="javascript:;" style="display: block; margin-left: -50px; margin- bottom: -20px;"> Export To </a>

我尝试了以下代码:

 new WebDriverWait(driver, 50).until(ExpectedConditions.elementToBeClickable(By.linkText("expTo"))).click();

但我无法点击该链接。

1 个答案:

答案 0 :(得分:2)

如果您使用链接元素的id属性值定位元素,则应该By.id()而不是: -

new WebDriverWait(driver, 50).until(ExpectedConditions.elementToBeClickable(By.id("expTo"))).click();

或者,如果您想使用By.linkText()找到元素,则应尝试将链接元素的精确innerText传递为: -

new WebDriverWait(driver, 50).until(ExpectedConditions.elementToBeClickable(By.linkText(" Export To "))).click();

注意: - 正如我在您提供的HTML中看到的链接元素innerText有额外的空格,在这种情况下,如果您使用的是By.linkText() ,你必须传递带有额外空格的元素innerText。如果存在额外的空格,您还可以尝试使用By.partialLinkText()仅传递可见文本而不使用空格: -

new WebDriverWait(driver, 50).until(ExpectedConditions.elementToBeClickable(By.partialLinkText("Export To"))).click();

已修改

  

在IFrame Saurabh里面。我该如何点击?

如果此元素位于iframe内,则需要在找到元素之前切换iframe,如下所示: -

WebDriverWait wait = new WebDriverWait(driver, 50);

//Now switch to iframe 
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("iframe id or name"));

//Now find desire element click 
wait.until(ExpectedConditions.elementToBeClickable(By.id("expTo"))).click();

//After doing all stuff inside iframe switch back to default content for further steps
driver.switchTo().defaultContent();