Я пытаюсь провести интеллектуальный анализ данных на веб-сайте. Я использую селен с веб-драйвером внутри цикла for. Проблема в том, что мой код дает сбой, когда я настраиваю его на ожидание.
На сайте вам нужно нажать на картинку, которая отправит заказ на отдачу вам файла. В случае Firefox вам нужно указать, хотите ли вы загрузить его или сохранить. Это уже решено, однако когда дело доходит до перехода на следующий веб-сайт, происходит сбой.
Проблема в том, что последняя строка приводит к TypeError: 'str' object is not callable.
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("browser.download.dir", "D:path")
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.google-earth.kml+xml")
for i in urls['tubicacion']:
driver = webdriver.Firefox(firefox_profile=profile,
executable_path=r'path\geckodriver-v0.24.0-win64\geckodriver.exe')
driver.maximize_window()
driver.get(i)
elemen = driver.find_element_by_xpath('//*[@id = "GOOGLE"]').click()
driver.implicitly_wait(0)
follow = WebDriverWait(driver,5).until(EC.invisibility_of_element_located(By.XPATH('//*[@id = "GOOGLE"]'))).click().close()
Я также пробовал последнюю строку, например:
WebDriverWait(driver,5).until(EC.invisibility_of_element_located(By.XPATH('//*[@id = "GOOGLE"]').text)).click().close()






Это должно решить вашу проблему, удалите .text. Я также удаляю .close
WebDriverWait(driver,5).until(EC.invisibility_of_element_located(By.XPATH('//*[@id = "GOOGLE"]'))).click()
Я получил это сообщение File "<ipython-input-43-a20e9012b89b>", line 26, in <module> follow = WebDriverWait(driver,5).until(EC.invisibility_of_element_located(By.XPATH('//*[@id = "GOOGLE"]'))).click() TypeError: 'str' object is not callable
Использование By.XPATH с кортежем
WebDriverWait(driver,5).until(EC.visibility_of_element_located((By.XPATH, '//*[@id = "GOOGLE"]')))
Это поднимает эту проблему ^ SyntaxError: invalid syntax
@user143853 user143853 Не эта строка, я проверил. Где именно ошибка?
Там, если я создам By.XPATH кортеж, возникнет эта ошибка.
@ user143853 Ты что-нибудь изменил? добавили или убрали что-то? опубликуйте строку, которая дает вам ошибку.
Подождите, я скопирую вашу строку, и вот что я получаю сейчас: raise TimeoutException(message, screen, stacktrace) TimeoutException
@ user143853 ты уверен, что хочешь invisibility_of_element_located, а не visibility_of_element_located? вы хотите щелкнуть по нему в конце концов, вы не можете сделать это, если элемент невидим.
Это веб-сайт связь. Если я использую visibility_of_element_located, он работает отлично. Однако каждый раз он открывает новый браузер, и я пытаюсь загрузить 600 000 файлов. Так что мне нужно, чтобы закрыть браузер и открыть его снова. Или оставьте его открытым и просто измените URL-адрес, загрузите файл и так далее.
@ user143853 Это совершенно другой вопрос, его следует опубликовать как новый вопрос, а не в комментариях.
Хорошо, я так и сделаю. Спасибо!
Не делайте .text !! вам нужно нажать на элемент, не нужно извлекать текст