【问题标题】:selenium.common.exceptions.ElementNotVisibleException: Message: element not interactable using Seleniumselenium.common.exceptions.ElementNotVisibleException:消息:元素无法使用 Selenium 进行交互
【发布时间】:2019-04-27 10:10:22
【问题描述】:

我正在寻找一个有趣的程序,但我对 selenium 有一些问题,我 需要一些帮助... 这是程序(我删除了webdriver的目录,因为文件夹的名称包含其他人的名字)

from selenium import webdriver
import webbrowser
import time


def Pass_send_():
    driver=webdriver.Chrome()
    driver.get('chrome://flags/#password_export-enable')


    ricerca=driver.find_element_by_id("search")
    ricerca.send_keys('password export')
    scorritore=driver.find_element_by_class_name('experiment-select')
    scorritore.click()



Pass_send_()

所以它的目的很简单,它应该打开一个窗口,输入一个文本并单击一个按钮。一切正常,但点击没有,这是错误:

Traceback (most recent call last):
      File "C:\Python34\internet22.py", line 18, in <module>
Pass_send_()
  File "C:\Python34\internet22.py", line 14, in Pass_send_
scorritore.click()
  File "C:\Python34\lib\site- 
   packages\selenium\webdriver\remote\webelement.py", line 80, in click
    self._execute(Command.CLICK_ELEMENT)
  File "C:\Python34\lib\site- 
packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "C:\Python34\lib\site- 
packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Python34\lib\site- 
packages\selenium\webdriver\remote\errorhandler.py", line 242, in 
check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotVisibleException: Message: element not interactable

所以我不是专家,但它说:元素不可交互?这是什么意思,我该如何解决?非常感谢您的回复...

【问题讨论】:

  • 您可以在发送搜索键后添加一些 time.sleep()。由于 api 可能需要一些时间来加载,所以如果你能有 5 秒的延迟,它将帮助你解决这个问题。
  • 好吧,我试过了,但没用,但是我了解了一个新的强大功能,非常感谢

标签: python selenium google-chrome selenium-chromedriver webdriverwait


【解决方案1】:

要将字符序列发送到网页chrome://flags/#password_export-enable内的搜索框,您需要诱导WebDriverWait,您可以使用以下命令解决方案:

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
    options = Options()
    options.add_argument('start-maximized')
    options.add_argument('disable-infobars')
    options.add_argument('--disable-extensions')
    driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
    driver.get('chrome://flags/#password_export-enable')
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#search"))).send_keys("password export")
    
  • 浏览器快照:

【讨论】:

  • 所以错误消失了,但它不起作用....它打开页面并输入文本但它没有点击按钮
  • 我认为是因为使用您的代码程序会等到按钮可点击,但出于某种原因,我不知道,它不可点击,因此程序继续等待...跨度>
  • @ScooterzGiovanni 根据您的问题,步骤 ...输入文本... 很明显您要发送 字符序列 到搜索框,您从未告诉我们哪个...单击按钮...。根据您的代码试验,find_element_by_class_name('experiment-select') 识别 690 个元素。
猜你喜欢
  • 2019-04-01
  • 1970-01-01
  • 2019-06-27
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
  • 2017-12-22
  • 1970-01-01
相关资源
最近更新 更多