Как нажать кнопку развернуть, чтобы открыть раздел с помощью Selenium Webdriver C#



У меня возникли проблемы с нажатием кнопки развернуть, которая открывает раздел страницы, содержащий флажки таксономии.

Кажется, webdriver думает, что он выполняет действие, чтобы нажать на кнопку Expand, но раздел остается свернутым.

Ниже приведена часть HTML



Код



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 () action



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


Результат: Webdriver проходит этот шаг, однако на экране ничего не произошло, кнопка развернуть по-прежнему свернута, а опция по-прежнему скрыта.



Попытка 2: я попробовал действие MoveToElement



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


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



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



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



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

739   2  

2 ответов:

Оказывается, для этого типа кнопки развернуть, если вы на самом деле идете за глифион-Шеврон и нажимаете на него, то действие выполняется...

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

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

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

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

Интересно, стал ли элемент кликабельным? Вы пробовали использовать WebDriverWait и флаг ожидаемого условия? Какой-то пример кода. Больше ссылок здесь 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()

Comments

    Ничего не найдено.