WebDriver — элемент не является интерактивным драйвером Chrome

Я использую WebDriver в Chrome и получаю следующую ошибку при нажатии на элемент:

Clicking locator: //div[@id='tabContainer']/ul/li[3]/a/div   Element
> is not clickable at point (170, 127). Other element would receive the
> click: <ul style="left: 5px; top: 25px; display: block;"
> class="jdm_events">...</ul> (WARNING: The server did not provide any
> stacktrace information) Command duration or timeout: 32 milliseconds
> Build info: version: '2.29.0', revision: '58258c3', time: '2013-01-17
> 22:46:35' System info: os.name: 'Windows Server 2008 R2', os.arch:
> 'x86', os.version: '6.1', java.version: '1.7.0_11' Session ID:
> 740bb830a8add9463c23d4461c99acc9 Driver info:
> org.openqa.selenium.chrome.ChromeDriver Capabilities [{platform=XP,
> chrome.chromedriverVersion=26.0.1383.0, acceptSslCerts=false,
> javascriptEnabled=true, browserName=chrome, rotatable=false,
> locationContextEnabled=false, version=25.0.1364.152,
> cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true,
> browserConnectionEnabled=false, webStorageEnabled=true,
> nativeEvents=true, applicationCacheEnabled=false,
> takesScreenshot=true}]

Это происходит только при одновременном запуске нескольких тестов через Grid2 с использованием привязок .NET для WebDriver.

Обычно я получаю около 2 сбоев теста из 20 при каждом запуске, но тест, который не прошел один раз, может работать правильно в следующий раз.

Мне интересно, является ли это известной проблемой с драйвером Chrome или есть что-то, что нужно добавить к моему методу щелчка, чтобы справиться с тем, что вызывает это.

Вот пример кода, в котором находится элемент, по которому нужно щелкнуть:

<li class="ui-state-default ui-corner-top">
  <a href="#fundingTab" title="">
    <div class="tab" style="float: left; padding: 0.5em 1em">
     <span style="overflow: visible;">Funding</span>
    </div>
  </a>
</li>
</ul>

person Andrew    schedule 11.03.2013    source источник
comment
Обычно это происходит, когда что-то мешает тому, что вы пытаетесь щелкнуть (т.е. то, что вы нашли, находится за другим элементом)... так что же именно отображается, когда возникает эта ошибка? Если это на сервере, к которому вы не можете получить доступ к рабочему столу, ваши тесты сделают снимок экрана при сбое (оберните его в try/catch)   -  person Arran    schedule 11.03.2013
comment
Я сделал снимки экрана в блоке catch, и кажется, что выпадающее меню в верхнем левом углу открыто, «блокируя» некоторые элементы. Я предполагаю, что Chromedriver по умолчанию устанавливает положение мыши здесь, и при наведении курсора открывается это меню. Однако я не нашел способа отключить это событие наведения.   -  person Andrew    schedule 12.03.2013
comment
Я столкнулся с той же проблемой, что и описанная в вашем комментарии Эндрю (т.е. наведение курсора на элемент блоков меню). Как вы находите свой элемент, используя css или используя Xpath? Я просматривал сообщение об ошибке, которое вы разместили здесь, и я не мог понять его, поскольку ваш элемент имеет форму xpath, но также имеет некоторые теги div! //div[@id='tabContainer']/ul/li[3]/a/div.. Я настоятельно рекомендую попробовать определить местонахождение исключительно с помощью локатора CSS (кстати, вы используете firebug?)   -  person Xwris Stoixeia    schedule 14.03.2013


Ответы (2)


Поскольку это происходит только при выполнении нескольких тестов (локально или в каком-либо механизме непрерывной интеграции), это также может произойти из-за завершения предыдущего состояния завершения теста, которое влияет на следующий тест. Например: В тесте 1 компонент come добавлен на главную страницу. тест выполнен. компонент удален. В тесте 2 компонент по-прежнему отображается на странице, что может повлиять на тест.

Так что в вашем случае рассмотрите вариант, что открытое меню такое не из-за зависания, а из-за того, что в предыдущем тесте оно открывалось.

Надеюсь, поможет.

P.S. А что касается изменения исходного положения мыши - я нашел этот ответ, возможно, он может вам помочь: Как сбросить положение курсора мыши в Selenium?

person Johnny    schedule 12.11.2013

У меня была аналогичная проблема с функцией чата Olark после того, как она была добавлена ​​на наш сайт. В этом случае я настраиваю тесты на автоматический вызов API отключения на olark перед выполнением любого отдельного тестирования после загрузки страницы.

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

person Lucas Holt    schedule 25.11.2013