Получите CSS_SELECTOR или XPATH кнопки Selenium Python

#python-3.x #selenium #xpath #css-selectors #element

Вопрос:

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

введите описание изображения здесь

 driver.find_elements_by_id("id__1115").click()
driver.find_elements_by_css_selector('.ms-Button.ms-Button--default.manageOwnersButtonStyle-1007').click()
driver.find_elements_by_xpath("/html[1]/body[1]/div[5]/div[1]/div[1]/div[1]/div[1]/div[3]/div[2]/div[3]/div[2]/div[1]/div[1]/div[1]/div[3]/button[1]/span[1]/span[1]/span[1]").click()
driver.find_elements_by_xpath("/html[1]/body[1]/div[5]/div[1]/div[1]/div[1]/div[1]/div[3]/div[2]/div[3]/div[2]/div[1]/div[1]/div[1]/div[3]/button[1]").click()
 

Ответ №1:

элементы и нажмите «Ошибка» вместо «элемент» и нажмите», потому что элементы создают список, а список недоступен в selenium.

Я изменил свой код на :

 driver.find_element_
 

Только этот xpath работал:

 driver.find_element_by_xpath("/html[1]/body[1]/div[5]/div[1]/div[1]/div[1]/div[1]/div[3]/div[2]/div[3]/div[2]/div[1]/div[1]/div[1]/div[3]/button[1]/span[1]/span[1]/span[1]").click()
 

Спасибо

Я не знаю, сколько элементов. Например: (лучше использовать xpath)

 el = driver.find_elements_by_id("id__1115")
el[2].click()
 

Комментарии:

1. Если другие варианты выбора дают более одного, вы можете выполнить итерацию или нарезку, а затем нажать

Ответ №2:

Если Add owners текст не изменится, то

Вы можете использовать приведенный ниже xpath

 //span[text()='Add owners']/ancestor::button
 

Нажмите на него, как

Пробная версия кода 1 :

 time.sleep(5)
driver.find_element_by_xpath("//span[text()='Add owners']/ancestor::button").click()
 

Пробная версия кода 2 :

 WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Add owners']/ancestor::button"))).click()
 

Импорт :

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

PS : Пожалуйста, проверьте в dev tools (Google chrome), есть ли у нас уникальная запись HTML DOM или нет.

Шаги для проверки:

Press F12 in Chrome -> перейдите в > element раздел -> сделайте > CTRL F -> затем вставьте > xpath и посмотрите, element выделяется ли ваш желаемый 1/1 соответствующий узел.