Флажок Python Selenium без идентификатора и имени - PullRequest
1 голос
/ 04 июня 2019

Я пытаюсь настроить автоматизацию, которая поможет мне работать легче. Я хочу войти на устройство автоматически и установить некоторые начальные настройки. У меня возникли проблемы с тем, что для продолжения я должен установить флажок, но я не смог найти способ нажать на кнопку. link

Это XPath для этой кнопки:

//*[@id="tableHdd"]/div/div[1]/span[1]/input

broswer.find_element_by_class_name('table-cell').find_elements_by_class_name('checkbox').click()

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

К clcick() на флажок Вы должны вызвать WebDriverWait для element_to_be_clickable(), и вы можете использовать любой из Локатор стратегий :

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

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div#tableHdd > div.table > div.table-header > span.table-cell > input.checkbox"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='tableHdd']/div[@class='table']/div[@class='table-header']/span[@class='table-cell']/input[@class='checkbox']"))).click()
    
  • Примечание : Вы должны добавить следующий импорт:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
0 голосов
/ 04 июня 2019

Вы неправильно используете Локаторы элементов

  • find_element_* должен возвращать один уникальный WebElement . Если локатор соответствует> 1 элементу - будет возвращено первое совпадение.
  • find_elements_* - возвращает Список веб-элементов, вы не можете вызвать click() функцию из списка

Так что если на странице есть только один флажок - вы можете поставить галочку следующим образом:

driver.find_element_by_class_name("checkbox").click()

Если есть больше флажков, и вам нужно отметить один из них - используйте слегка измененное выражение XPath :

driver.find_element_by_xpath("//div[@id='tableHdd']/descendant::*/span[@class='table-cell']/input").click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...