【问题标题】:Selenium Webdriver :- Element Not Interactable Exception for the search optionSelenium Webdriver :- 搜索选项的元素不可交互异常
【发布时间】:2020-08-26 02:09:47
【问题描述】:

我正在尝试使用值“fab”填写搜索输入类型框,然后我想使用该关键字显示下一个 url,但我收到了元素不可交互的错误。我该如何解决这个问题?

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome(executable_path='C:\\Users\\Mansi Dhingra\\Downloads\\chromedriver')
driver.get("https://www.thenational.ae/search?q=")
print(driver.title)
driver.implicitly_wait(10)
search_bar = driver.find_element_by_xpath('//input[@name="q"]')
print(search_bar)
search_bar.clear()
search_bar.send_keys("fab")
search_bar.send_keys(Keys.RETURN)
print(driver.current_url)
driver.close()

错误:-

Traceback(最近一次调用最后一次):文件“C:/Users/Mansi Dhingra/Desktop/Projects/api/news/news_python.py”,第 10 行,在 search_bar.clear() 文件 "C:\Users\Mansi Dhingra\Desktop\Projects\api\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", 第 95 行,清晰 self._execute(Command.CLEAR_ELEMENT) 文件“C:\Users\Mansi Dhingra\Desktop\Projects\api\venv\lib\site-packages\selenium\webdriver\remote\webelement.py”, 第 633 行,在 _execute 返回 self._parent.execute(command, params) 文件“C:\Users\Mansi Dhingra\Desktop\Projects\api\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", 第 321 行,在执行中 self.error_handler.check_response(response) 文件 "C:\Users\Mansi Dhingra\Desktop\Projects\api\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", 第 242 行,在 check_response 中 raise exception_class(message, screen, stacktrace) selenium.common.exceptions.ElementNotInteractableException: 消息: 元素不可交互(会话信息:chrome=81.0.4044.92)

【问题讨论】:

    标签: python selenium selenium-webdriver


    【解决方案1】:

    每当找到 webelement 但尚未准备好交互时,webdriver 将抛出 element not intractable 异常。

    1.大多数情况下,当元素位于页面底部时,可以通过向下滚动页面来访问它。您可以使用 Action 类来滚动以滚动到该元素

    WebElement element = driver.findElement(By.id("my-id"));
    Actions actions = new Actions(driver);
    actions.moveToElement(element);
    ## actions.click();
    actions.perform();
    

    2。有时我们需要等待几秒钟才能访问 web 元素,在这种情况下我们可以添加等待语句。

    wait = WebDriverWait(driver, 10)
    element = wait.until(EC.element_to_be_clickable((By.ID, 'someid')))
    

    【讨论】:

    • 其实我是硒新手。你能帮我把你的代码嵌入我的吗,因为我不完全明白我必须在哪里进行更改。
    • 我已经应用了等待功能,并且搜索也不是最后一个元素。如果您能帮助我将更改附加到我的代码中,那将非常有帮助
    • 尝试在“search_bar.clear()”行之前添加隐式等待语句,然后尝试
    猜你喜欢
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 2020-12-08
    • 2021-08-02
    相关资源
    最近更新 更多