如何单击没有任何链接文本的超链接

时间:2019-01-10 00:04:28

标签: java selenium xpath css-selectors webdriverwait

我正在尝试单击没有链接文本的超链接。

我有:

deviceTheme

我尝试过:

 <a id="fontColor" href="f?p=420181023:1:12264109389989:1416222:NO::P1_SEMCODE:20190">
     <strong>Check</strong>
 </a>

导致No.SuchElementException

driver.findElement(By.xpath("//a[@href='f?p=420181023:1:12264109389989:1416222:NO::P1_SEMCODE:20190']")).click();

什么都不做

我从不同的网站阅读了不同的材料,但似乎没有提到没有链接文本的超链接。

是否可以替代
driver.findElement(By.id("fontColor")).click();

来源:

How to click a href link using Selenium

https://www.w3schools.com/html/html_links.asp

1 个答案:

答案 0 :(得分:2)

所需元素看起来是动态元素,因此调用click()时需要诱使 WebDriverWait 使所需元素可点击,并且您可以使用以下解决方案:

  • cssSelector

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("a#fontColor[href*='P1_SEMCODE']>strong"))).click();
    
  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@id='fontColor' and contains(@href, 'P1_SEMCODE')]/strong[contains(., 'Check')]"))).click();