Selenium getAttribute (href) возвращает нулевое значение, используя Java - приложение Salesforce - PullRequest
0 голосов
/ 30 сентября 2019

Это приложение Salesforce. Я хочу получить приведенное ниже значение атрибута из тега <a>

  1. Href

  2. Заголовок

HTML Code

<one-app-nav-bar-item-root one-appnavbar_appnavbar="" data-id="home" data-assistive-id="operationId" aria-hidden="false" draggable="true" class="navItem slds-context-bar__item slds-shrink-none slds-is-active" role="listitem" xpath="1">
<a href="/lightning/page/home" title="Home" tabindex="0" draggable="false" aria-describedby="operationId-14" class="slds-context-bar__label-action dndItem" style="">
<span class="slds-truncate">Home</span>
</a></one-app-nav-bar-item-root>

Код Selenium (отличный язык сценариев)

for(int i:(1..size)){
            WebElement getHref = driver.findElement(By.xpath("//one-app-nav-bar-item-root[${i}]//a[1]"))
            println getHref.getAttribute("href")
            println getHref.getAttribute("title")
}

output

null
null

ПРИМЕЧАНИЕ. Когда я выполняю приведенный выше код в FireFox,Я получаю ожидаемый результат

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Вместо xpath вроде //one-app-nav-bar-item-root[${i}]//a[1]

Попробуйте как (//*[@role='listitem'])[${i}]//a[1]

0 голосов
/ 30 сентября 2019

Чтобы извлечь значение атрибутов href и title, вы должны вызвать WebDriverWait для visibilityOfElementLocated() или elementToBeClickable(), и вы можете использовать следующие Стратегии локатора :

  • xpath :

    • href:

      System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//one-app-nav-bar-item-root/a[//span[text()='Home']]"))).getAttribute("href"));
      
    • title:

      System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//one-app-nav-bar-item-root/a[//span[text()='Home']]"))).getAttribute("title"));
      
...