Как выбрать определенный веб-элемент из приведенного ниже HTML-кода, используя python selenium - PullRequest
0 голосов
/ 30 ноября 2018

Ниже приведен HTML-код и способы выбора элемента с помощью селектора xpath или css

<button class="btn btn-sm ng-pristine ng-untouched ng-valid ng-empty" ng-repeat="ext in _view.getNonEmptyChildren()" ng-click="_navigate(ext.$id, _route.objectId, { 'navigator' : _route.navigator,
               'relatedItemParentId': relatedItemParentId(ext.$parent)})" ng-class="{active: _view.getSelectedChild().$id == ext.$id}" ng-model="radioModel" btn-radio="'{ext[nameField]}'" aria-invalid="false">Clusters</button>

1 Ответ

0 голосов
/ 30 ноября 2018

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

  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn.btn-sm.ng-pristine.ng-untouched.ng-valid.ng-empty[ng-model='radioModel'][ng-class*='getSelectedChild']"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-sm ng-pristine ng-untouched ng-valid ng-empty' and @ng-model='radioModel'][contains(.,'Clusters')]"))).click()
    
  • Примечание : необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
...