Я сталкиваюсь с ситуацией, когда модал иногда имеет нужную кнопку для входа в Facebook, а иногда мне приходится нажимать «Дополнительные параметры», чтобы перейти к кнопке Facebook. Другое препятствие заключается в том, что xpath more_options_btn
совпадает с xpath, называемым «Вход в систему?» поэтому я добавил [contains(text(),"More Options")]
, но не уверен в синтаксисе здесь и не могу найти правильный подход в документах. В любом случае это выдает ошибку, которая может быть вызвана тем, что элемент button
не имеет текста, вместо этого он вложен следующим образом button > span > text
Пожалуйста, имейте в виду, что я хочу сделайте мое решение динамичным c и максимально надежным, но пока не имеете большого опыта работы с Selenium.
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('http://localhost:3000/')
try:
fb_btn = driver.find_element_by_xpath(
'//*[@id="modal-manager"]/div/div/div/div/div[3]/span/div[2]/button')
fb_btn.click()
except:
more_options_btn = driver.find_element_by_xpath(
'//*[@id="modal-manager"]/div/div/div/div/div[3]/span/button[contains(text(),"More Options")]')
more_options_btn.click()
fb_btn = driver.find_element_by_xpath(
'//*[@id="modal-manager"]/div/div/div/div/div[3]/span/div[2]/button')
fb_btn.click()