#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
соответствующий узел.