Ошибка с селеном Java & chromedriver 77 на element.getAttribute ('id')? - PullRequest
0 голосов
/ 25 сентября 2019

С момента выпуска Google Chrome 77 я обновил наш процесс CI, так что автоматическое тестирование без головы выполняется с помощью:

Простой код, который работал отличнобольше не работает, потому что element.getAttribute ('id') возвращает значение null вместо строкового значения атрибута id элемента HTML (который был найден с помощью By.id ()!)

Я попробовал такую ​​конфигурацию в Windows и Linux (docker), и результат тот же: getAttribute ('id') возвращает ноль вместо идентификатора HTML-элемента

Упрощенный код для воспроизведения проблемы:

String myId = "myInputTypeDateId" ;
WebElement element = (new WebDriverWait(driver, timeout)).until(ExpectedConditions.presenceOfElementLocated(By.id(id)));
String eltId = element.getAttribute("id");
// With chrome 76 & chromedriver 76: returns "myInputTypeDateId"
// With chrome 77 & chromedriver 77: returns null

Дополнительная информация:

  • элемент, связанный с проблемой, является <input type = "date">
  • Я использую каркас компонентов Aura (Salesforce lightning)

Кто-то обнаружил похожую проблему с Chrome / Chromedriver 77?

Есть ли какой-нибудь совет по поводу обходного пути?

Ответы [ 2 ]

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

Чтобы извлечь атрибут id при попытке вызвать getAttribute() из элемента <input>, вместо использования presenceOfElementLocated() вам нужно вызвать WebDriverWait либо дляvisibility_of_element_located() или element_to_be_clickable(), и вы можете использовать любую из следующих Стратегий локатора :

  • Использование visibilityOfElementLocated():

    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.id("myInputTypeDateId"))).getAttribute("id"));
    
  • Использование elementToBeClickable():

    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("myInputTypeDateId"))).getAttribute("id"));
    

Подробное обсуждение можно найти в методе Java Wrapper для ожидания доступности элемента дляApache Cordova WebView приложение

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

Кажется, это ошибка совместимости между chromedriver и Salesforce

Это решено в chromedriver 78, но единственный способ заставить его работать с Chrome 77, похоже, использовать chromedriver 76 с Chrome 77

У нас есть несколько пользователей, которые просят заплатить chromedriver 77, но он пока не предоставлен

Подробнее здесь: https://bugs.chromium.org/p/chromedriver/issues/detail?id=3103#c6

...