Как перейти по гиперссылке без текста ссылки - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь нажать на гиперссылку без текста ссылки.

У меня есть:

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

Я пробовал:

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

Причины No.SuchElementException

driver.findElement(By.id("fontColor")).click();

Ничего не делает

Я читал разные материалы с разных сайтов, но, похоже, никто не упоминал гиперссылки без текста ссылки. Есть ли альтернатива

By.xpath()
By.id() 
By.linkText() 

Источники:

Как перейти по ссылке href с помощью Selenium

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

1 Ответ

0 голосов
/ 10 января 2019

Требуемый элемент выглядит как динамический элемент, поэтому для вызова 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();
    
...