OpenQA.Selenium.WebDriverException: неизвестная ошибка: a.tagName.toUpperCase не является функцией с элементамиactJS через Selenium и C # - PullRequest
0 голосов
/ 03 января 2019

У меня проблема, которая поставила меня в тупик, у меня есть метод, который находит и проверяет, все ли элементы на странице, часть этого метода проверяет, включен ли элемент страницы.

if (Driver.Instance.FindElement(identifier).Enabled == false)
 {
    // do some stuff
 }

Однако в операторе If возникает ошибка со следующей ошибкой:

StackTrace:at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebElement.Execute(String commandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebElement.get_Enabled()
...
OpenQA.Selenium.WebDriverException : unknown error: a.tagName.toUpperCase is not a function
(Session info: chrome=71.0.3578.98)
(Driver info: chromedriver=2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),platform=Windows NT 10.0.17134 x86_64)

Этот метод вызывается постоянно и работает с множеством других тестовых случаев при аналогичных обстоятельствах, однако не вызывает проблем., при попытке взаимодействия со следующим элементом я получаю сообщение об ошибке, показанное выше:

<div class="sc-gGBfsJ lhiRYE" span="5">
   <svg aria-hidden="true" data-prefix="fas" data-icon="times" class="svg-inline--fa fa-times fa-w-11 sc-jnlKLf dmaYnw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 352 512" name="tag-create-modal__dismiss-cross">
  <path fill="currentColor" d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"></path>
   </svg>
   <div class="sc-hdPSEv kfkXT" id="CreateTagPropSheet__container" name="undefined__container">
  <div class="sc-nrwXf egtFZS">
     <div class="sc-fKGOjr bfXSai sc-ekkqgF dATqpE">
        <h3 class="sc-cpHetk bdaBtw sc-crNyjn fXZflb" id="propertySheet__heading--undefined" name="propertySheet__heading--undefined">Create Tag</h3>
     </div>
  </div>
  <form name="create-Tag__form">
     <div class="sc-nrwXf egtFZS">
        <div class="sc-fKGOjr bfXSai sc-ekkqgF dATqpE">
           <div class="sc-hycgNl KoKFR"><label class="sc-jvEmr jErbdW sc-iBmynh kxfLCa">Tag Name</label></div>
           <div class="sc-chAAoq GJbAH" id="propertySheet__select--tagNameContainer" name="tagNameContainer">
              <div class="sc-dTLGrV dLLsoX"><input class="sc-ivVeuv fMqabh" color="normal" id="propertySheet__select--tagName" name="tagName" type="text" autocomplete="on" value=""></div>
           </div>
        </div>
     </div>
     <div class="sc-nrwXf egtFZS">
        <div class="sc-fKGOjr bfXSai sc-ekkqgF dATqpE">
           <div class="sc-hycgNl KoKFR"><label class="sc-jvEmr jErbdW sc-iBmynh kxfLCa">System Level Tag</label></div>
           <div class="sc-chPdSV Ekqp" id="isSystemLevelCheckContainer" name="isSystemLevelTagContainer">
              <input class="sc-kgoBCf fZucFc" type="checkbox" id="isSystemLevelCheck" name="isSystemLevelTag">
              <div class="sc-kGXeez clAVjW"></div>
           </div>
        </div>
     </div>
     <div class="sc-nrwXf egtFZS">
        <div class="sc-fKGOjr bfXSai sc-ekkqgF dATqpE"><button class="sc-bhlBdH gEVPJV" id="propertySheet__button--create-tag__Button" name="create-tag__Button" color="success">Create Tag</button></div>
     </div>
  </form>
   </div>
</div>

Мне интересно, имеет ли это какое-то отношение к самому элементу, а приведенный выше код является фрагментом нашего сайтаэто построено с использованием реакции, где эти элементы визуализируются условно.

Есть ли у кого-нибудь какие-либо идеи о том, что / может / могло бы быть причиной этой проблемы, будет принята с благодарностью ...

1 Ответ

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

Element.tagName

Согласно Element.tagName свойство tagName только для чтения интерфейса Element возвращает имя тега элемента, для которого он вызывается. Например, если элементом является <img>, его свойство tagName имеет значение "IMG" (для документов HTML; для документов XML / XHTML он может быть иначе).

  • Синтаксис:

    elementName = Element.tagName;
    
  • Значение: строка, указывающая имя тега элемента. Заглавная буква этой строки зависит от типа документа:

    • Для DOM-деревьев, представляющих HTML-документы, возвращаемое имя тега всегда находится в канонической заглавной форме. Например, tagName, вызываемый для элемента <div>, возвращает "DIV".
    • Имена тегов элементов в дереве XML DOM возвращаются в том же случае, в котором они записаны в исходном файле XML. Если документ XML содержит тег «», то значением свойства tagName будет «SomeTag».

Далее, согласно Document Object Model (Core) Level 1:

Обратите внимание, что это сохраняет регистр в XML, как и все операции DOM. HTML DOM возвращает tagName элемента HTML в канонической заглавной форме независимо от регистра в исходном HTML-документе.

Решение

Как вы уже упоминали, код - это фрагмент кода, использующий реагирование , поэтому перед проверкой элемента Включено вызывает WebDriverWait для видимости желаемый элемент следующим образом:

if (Driver.Instance.FindElement(identifier).Enabled == false)
if (new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(By.XPath("element_xpath"))).Enabled == false)
 {
    // do some stuff
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...