0

Below is the HTML code and how to select element wither by using xpath or css selector

<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
  • Please don't add code in comments like that, you can edit the original question to add the code with correct formatting (highlight it all and click the {} button in the editor). It's hard to read in comments. Commented Nov 30, 2018 at 7:58

1 Answer 1

1

The desired element is an Angular element so you have to induce WebDriverWait for the desired element to be clickable and you can use either of the following solutions:

  • Using 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()
    
  • Using 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()
    
  • Note : You have to add the following imports :

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.