Сообщение: элемент отключен и поэтому не может использоваться для ошибок действий с использованием Selenium на pythonanywhere.com - PullRequest
1 голос
/ 11 июля 2020

Я работал над сценарием автоматизации с использованием селена, после локальной разработки я смог заставить его постоянно работать в моем локальном браузере, однако я хотел бы настроить запуск файла на pythonanywhere.com. Я загрузил код и запустил его оттуда. Однако, когда я запускаю код, я получаю ошибку Message: Element is disabled and so may not be used for actions. Элемент должен быть правильным и взаимодействовать с ним, поскольку он отлично работал локально в моем браузере firefox, это может быть из-за различий в версиях firefox, но я так не думаю. Я видел ответы на это в Stack, но они говорят, что элемент неправильный, что не должно (но может) применяться в моем случае. Я могу успешно получить заголовок с веб-сайта.

Я не смогу поделиться кодом из-за чувствительности процесса, но я могу поделиться, что это форма Google и полное сообщение об ошибке , любая помощь будет принята с благодарностью.

Спасибо

Message: Element is disabled and so may not be used for actions
Stacktrace:
    at fxdriver.preconditions.enabled (file:///tmp/tmpi99ptn1x/extensions/fxdriver@googlecode.com/components/command-processor.js:10098)
    at DelayedCommand.checkPreconditions_ (file:///tmp/tmpi99ptn1x/extensions/fxdriver@googlecode.com/components/command-processor.js:126
44)
    at DelayedCommand.executeInternal_/h (file:///tmp/tmpi99ptn1x/extensions/fxdriver@googlecode.com/components/command-processor.js:1266
1)
    at DelayedCommand.executeInternal_ (file:///tmp/tmpi99ptn1x/extensions/fxdriver@googlecode.com/components/command-processor.js:12666)
    at DelayedCommand.execute/< (file:///tmp/tmpi99ptn1x/extensions/fxdriver@googlecode.com/components/command-processor.js:12608)

1 Ответ

2 голосов
/ 12 июля 2020

Это сообщение об ошибке ...

Element is disabled and so may not be used for actions

... подразумевает, что элемент, с которым вы пытаетесь взаимодействовать, отключен и, следовательно, не может использоваться для действий.

Deep Dive

Соответствующие HTML и испытания вашего кода помогли бы нам построить канонический ответ. Однако, как вы упомянули, вы смогли заставить его постоянно работать в моем локальном браузере , но не pythonanywhere.com на этом перекрестке, стоит упомянуть, что Selenium имеет тенденцию имитировать Действия пользователя , и некоторые из них:

  • Отправка текста: sendKeys("LiamHarries")
  • Специальные символы клавиатуры: sendKeys(Keys.ENTER) и sendKeys(Keys.RETURN)
  • Наведение мыши: moveToElement(element).perform()
  • Щелчок: click()

Все эти Действия пользователя не зависят от базовых и Аппаратная конфигурация. Следовательно, если они запускают одно и то же приложение, они будут вести себя одинаково.

Вы можете найти подробное обсуждение в Chrome & Firefox на Windows vs Linux (селен)

Эта ошибка

Эта проблема обсуждалась ранее в потоке Selenium webdriver: org.openqa.selenium.InvalidElementStateException: элемент отключен и поэтому не может использоваться для действий , где он было довольно очевидно, что OP пытался проверить, был ли элемент driver.findElement(By.xpath("//input[@id='gs_htif0']")) включен .

Определенно, на основе значения атрибута id gs_htif0 не было стандартом c и, следовательно, он должен периодически меняться и может быть доступен / недоступен в местных системах.

Решение

В В этих случаях решение состоит в построении стратегии локатора на основе статических c значений атрибутов.

Ссылки

Вы можете найти пару соответствующих обсуждений в:

...