Локатор случайно выходит из строя с Selenium и ChromeDriver в режиме без головы - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть выпадающее меню с текстом «Мое меню».К сожалению, этот же раскрывающийся список используется для другой цели с текстом «Мое второе меню».Мне нужно нажать на раскрывающееся меню «Мое меню», и оно выглядит следующим образом.

<?xml version="1.0" encoding="UTF-8"?>
<div class="c-composedDropdown u-display--flex u-align-items--center u-color--white u-cursor--pointer u-border-radius">
  <div class="u-display--flex u-align-items--center">
     <span class="flag-icon flag-icon-lg flag-icon-ie composedDropdown__subTitle__icon u-color--white" />
     <div>
        <div class="u-display--block u-display--flex u-align-items--center">
           <span class="u-font-weight--bold u-margin-right--medium">My Menu</span>
           <svg xmlns="http://www.w3.org/2000/svg" baseProfile="tiny" width="24" height="24" fill="currentColor" color="#37454D" viewBox="0 0 24 24" class="c-composedDropdown__arrow-icon u-color--blue-lighter">
              <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M9.5 7l5 5m-5 5l5-5" class="svg-color--primary" />
           </svg>
        </div>
        <p class="c-composedDropdown__subTitle u-display--block">Sample</p>
     </div>
  </div>

В настоящее время я использую XPath для захвата этого, и похоже,следующее.

//*[contains(@class, 'c-composedDropdown') and contains (.,'My Menu')]

Тестовый сценарий для этого проходит нормально, когда я запускаю его один.Но когда запускается весь набор тестов, случайным образом этот тест не выполняется.Это тоже при работе в режиме без головы.Могу ли я что-нибудь сделать с тем, как я выбираю этот элемент для нажатия?Поможет ли это в тесте?Любые предложения будут высоко оценены.

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

К click() на элементе с текстом Мое меню , вам нужно заставить WebDriverWait для element_to_be_clickable(), и вы можете использовать любой из Локатор Стратегии

  • CSSSelector

    "div.c-composedDropdown span.u-font-weight--bold.u-margin-right--medium"
    
  • * 1021 XPath *:

    "//div[contains(@class, 'c-composedDropdown')]//span[@class='u-font-weight--bold u-margin-right--medium' and text()='My Menu']"
    
0 голосов
/ 24 апреля 2019

Попробуйте следовать Xpath. Надеюсь, это сработает.

//div[contains(@class,"c-composedDropdown")]//following-sibling::span[text()="My Menu"]
...