#python-3.x #selenium
#python-3.x #селен
Вопрос:
Я создаю бота для удаления и воссоздания канала Discord снова и снова.
Даже если элементы собираются снова после обновления, в коде отображается ошибка устаревшего элемента
def remake_channels(self):
sleep(5)
script = """
document.querySelectorAll('a[aria-label="aa"')[0].click()
"""
self.driver.execute_script(script)
def delete_channel():
channels = self.driver.find_elements_by_xpath("//div[contains(@class, 'content-3at_AU')]")
for channel in channels:
text = channel.get_attribute('innerText')
if text == 'new':
self.action.context_click(on_element = channel)
self.action.perform()
self.driver.find_element_by_xpath("//div[contains(text(), 'Delete Channel')]").click()
sleep(1)
self.driver.find_element_by_xpath("//div[contains(text(), 'Delete Channel')]").click()
print("Deleted The Channel")
def make_channel():
script = """
document.querySelectorAll('div[class="contents-18-Yxp"]')[1].click()
"""
self.driver.execute_script(script)
sleep(1)
self.driver.find_element_by_xpath("//input[contains(@class, 'inputDefault-_djjkz input-cIJ7To')]").send_keys('new')
self.driver.find_element_by_xpath("//div[contains(text(), 'Create Channel')]").click()
print("Added The Channel!")
delete_channel()
make_channel()
Помощь Amy приветствуется <3
Комментарии:
1. ваши ссылки на элементы (каналы) устаревают после ваших кликов … (DOM обновляется, и ваши ссылки больше не действительны.)
2. Я получаю свои элементы после обновления DOM, тем не менее, он показывает ошибку устаревшего элемента
3. используйте webdriverwait или просто обычный режим сна… DOM, вероятно, все еще обновляется при проверке. Вы также можете использовать вызов get_elements и перехватить устаревшую ссылку на элемент … если пойманный DOM все еще обновляется… функция вызова.
4. обязательно попробую