Задать вопрос

Прокликать все ссылки на странице?

Есть такой код:
def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get('https://yandex.ru')

    def test_01(self):
        # def links_parse(self):
            driver = self.driver
            driver.fullscreen_window()
            links = []
            links = driver.find_elements_by_xpath("//*[contains(@href, 'http')]")

        # def clicking(self, links):
            for link in links:
                link.click()
                driver.get('https://yandex.ru')
                time.sleep(4)    

    def tearDown(self):
        self.driver.quit()


Он должен заполнить массив links ссылками, а потом прокликать их в цикле, возвращаясь на главную страницу.
Первая ссылка нажимается, он возвращается на главную страницу, но при нажатии на следующую, вылетает. А в консоли "element not interactable". При этом если пикать ссылки вручную из массива, то какие-то будут нажиматься, а какие-то точно так же "not interactable". Подскажите, пожалуйста, если у меня в массиве только ссылки, как они могут быть "not interactable" и как решить эту проблему?
  • Вопрос задан
  • 1011 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
как они могут быть "not interactable"


в наше время может быть все что угодно

ты же кликаешь как правильный пацан -возвращаешься, прогружаешь, находишь, кликаешь?

или как застековерфловивший код нуб?
Ответ написан
devildayne
@devildayne
Так можно же
for link in links:
                link.click()
                driver.back()
                time.sleep(4)


Если просто нужно открыть ссылку и вернуться на yandex.ru (driver.back())
А так,как мне кажется нужно проверить правильно ли селениум парсит ссылки
и в цикле прокликать их по индексам(попутно смотря на результат в браузере)
до кучи можно ждать полной загрузки страницы, если есть такая нужда

from selenium.webdriver.support.ui import WebDriverWait 

WebDriverWait(driver, 100).until(
                    EC.element_to_be_clickable((By.XPATH, "//input[contains(@value,'Назад')]")))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы