Моя проблема в том, что я понимаю selenium.common.Exceptions.ElementNotInteractableException ТОЛЬКО, если я пытаюсь запустить свой код в автономном режиме.
Вот код. Не беспокойтесь о том, чего он пытается достичь, кроме предоставления минимально воспроизводимого примера
Код: Выделить всё
from selenium import webdriver
from selenium.webdriver import ChromeOptions
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
options = ChromeOptions()
options.add_argument("--headless")
user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
options.add_argument(f"user-agent={user_agent}")
QUERY = "museums in london"
# This bypasses the "automation" warning
def bypass(driver):
try:
wait = WebDriverWait(driver, 5)
for button in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "button"))):
if button.text.strip() == "Reject all":
button.click()
break
except Exception:
pass
with webdriver.Chrome(options=options) as driver:
driver.get("https://www.google.com")
bypass(driver)
selector = By.CSS_SELECTOR, 'form[action="/search"] textarea[name=q]'
textarea = WebDriverWait(driver, 5).until(EC.presence_of_element_located(selector))
# The following Action sequence makes no difference to the program's behaviour
ActionChains(driver).move_to_element(textarea).click(textarea).perform()
textarea.send_keys(QUERY+Keys.RETURN)
urls = set()
selector = By.CSS_SELECTOR, "cite[role=text]"
for cite in WebDriverWait(driver, 5).until(EC.presence_of_all_elements_located(selector)):
if text := cite.text.strip():
urls.add(text)
print(*urls, sep="\n")
Если вы удалите добавление аргумента --headless в класс ChromeOptions, код работает без ошибок.
Я надеялся, что код ActionChains поможет, но он не имеет никакого значения для поведения программы, в автономном режиме или нет. Я просто оставил это на случай, если кто-нибудь предложит это в качестве потенциального обходного пути.
Почему это проблема только в безголовом режиме? Что с этим можно сделать?
Подробнее здесь: https://stackoverflow.com/questions/787 ... teractable