首页 文章

使用ng-model的Python Selenium中的下拉选择

提问于
浏览
1

我的网页有一个选择框的以下属性,我希望选择第一个选项为 All Category

<select ng-model="abc" ng-change="abc(abc)" class="ng-valid ng-dirty ng-valid-parse ng-touched ng-not-empty" style="">
                <option disabled="" value="" selected="selected">Select a category...</option>
                <option value="All Category">All Category</option>

无论如何我可以通过ng-model =“abc”或类找到元素并从下拉列表中选择“所有类别”选项?

2 回答

  • 0

    所需的元素是Angular元素,因此您必须引导WebDriverWait才能使元素可单击,您可以使用以下任一解决方案:

    • 使用 CSS_SELECTOR
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select.ng-valid.ng-dirty.ng-valid-parse.ng-touched.ng-not-empty[ng-model='abc']"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select.ng-valid.ng-dirty.ng-valid-parse.ng-touched.ng-not-empty[ng-model='abc'] option[value='All Category']"))).click()
    
    • 使用 XPATH
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@class='ng-valid ng-dirty ng-valid-parse ng-touched ng-not-empty' and @ng-model='abc']"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@class='ng-valid ng-dirty ng-valid-parse ng-touched ng-not-empty' and @ng-model='abc']//option[@value='All Category']"))).click()
    
  • 0

    您可以使用xpath来查找元素:

    element = driver.find_element_by_xpath("//option[@value='All Category']")
    

    您可以在docs上阅读有关xpath的更多信息 .

相关问题