2016-08-11 3 views
2

У меня возникли проблемы с нажатием на кнопку «Развернуть», которая открывает раздел списка таксономии.
Кажется, webdriver думает, что он выполняет действие, чтобы нажать кнопку «Развернуть», но раздел остается рухнувшим.
Ниже часть HTMLКак нажать кнопку «Развернуть», чтобы открыть раздел, используя Selenium Webdriver C#

Код

metadata-editor name="resourceModelTaxonomyTypeIds" label-text="Type" matadata-fieldname="Type" resource-id="id" selected-ids="resourceModel.TaxonomyTypeIds" required class="ng-isolate-scope" 
<div class="form-group" ng-class="{'has-error': (required && form.$submitted && !isValid)}" 
    ::before 
    <div class="col-md-9"> 
    <!-- ngRepeat: node in loadSelectedNodes() --> 
    <br ng-show="loadSelectedNodes().length > 0" class="ng-hide" 
    <button type="button" class="btn btn-sm btn-info btn-expand-taxonomy ng-pristine ng-binding ng-invalid ng-invalid-valid ng-touched" name="resourceModelTaxonomyTypeIds" ng-model="selectedIds" ng-click="toggleView(isCollapsed)"><span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> Expand</button> 

Вот некоторые из моих разработок, которые не работали:

Попытка 1: Я попробовал простой .click() действие

driver.FindElement(By.Name("resourceModelTaxonomyTypeIds")).Click(); 

Результат: Webdrive r проходит этот шаг, однако ничего не произошло на экране, кнопка Expand все еще рухнула, и опция все еще скрыта.

Попытка 2: Я попытался MoveToElement Действие

Actions clickExpand = new Actions(driver); 
clickExpand.MoveToElement(driver.FindElement(By.Name("resourceModelTaxonomyTypeIds"))).Click().Perform(); 

Результат: То же, как и раньше, WebDriver думает, что все в порядке, но в действительности кнопку Expand еще не расширен раздел.

Покушение 3: установлен Selenium IDE, сделать запись и воспроизведение, чтобы увидеть, что она на него коды, как (путем преобразования в C#) Селен IDE записывает его с .Click() действия, как я пытался в попытке 1 выше.

Я немного зациклен на том, почему это не будет работать для этой конкретной кнопки. Кто-нибудь сталкивался с этим или рассматривал эти типы кнопок расширения?

Примечание: Вручную протестировали кнопку развернуть, нажав кнопку, чтобы подтвердить, что кнопка работает, просто webdriver, похоже, не делает этого.

+0

Вы пробовали использовать JavaScript, чтобы выполнить щелчок? используя команду ExecuteScript? –

+0

После попытки третьей попытки использовать драйвер '((IJavaScriptExecutor)) .ExecuteScript (" arguments [0] .click() ", driver.FindElement (By.Имя ("resourceModelTaxonomyTypeIds"))); 'и дайте мне знать –

+0

И убедитесь, что при условии, что имя для определения местоположения уникально и расположено по правильной кнопке, которую вы хотите .. :) –

ответ

1

Оказывается, для этого типа кнопки расширения, если вы на самом деле идти после glyphion-шеврона и нажмите что, то действие выполняет ...

driver.FindElement(
      By.CssSelector(
       ".glyphicon.glyphicon-chevron-right")).Click(); 

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

нажать, чтобы свернуть область экрана вам нужно ....

driver.FindElement(
       By.CssSelector(
        ".glyphicon.glyphicon-chevron-down")).Click(); 
0

Интересно, стал ли элемент кликабельным? Вы пытались использовать WebDriverWait и флаг Expected Condition? Некоторые примеры кода. Другие ссылки здесь http://selenium-python.readthedocs.io/waits.html?highlight=webdriverwait

try: 
    more = WebDriverWait(self.driver, 10,poll_frequency=2,ignored_exceptions=[ElementNotVisibleException, ElementNotSelectableException]).until(EC.element_to_be_clickable((By.Name, 'resourceModelTaxonomyTypeIds'))) 
except TimeoutException: 
    break 

more.click() 
Смежные вопросы