【问题标题】:unable to access HTML Select Option using selenium getting error. ElementNotInteractableException无法使用 selenium 访问 HTML Select Option 获取错误。 ElementNotInteractableException
【发布时间】:2021-07-22 11:45:00
【问题描述】:

我正在尝试从这个通过 javascript (ajax) 请求加载数据的 File-tuning 动态网站中抓取数据。

要做的是它从类型中选择汽车,然后迭代地选择品牌、型号、发动机,然后我想为每个品牌、型号和发动机抓取数据。

这是我编写的用于从类型中选择汽车的代码

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select

PATH = "C:\SeleniumDrivers\geckodriver.exe"
driver = webdriver.Firefox(executable_path=PATH)

driver.get("https://file-tuning.com/chiptuning")

type_element_select = driver.find_element_by_id("type")
action = ActionChains(driver) 
action.move_to_element(type_element_select)
action.click(type_element_select)
action.perform()
action.move_to_element(Select(type_element_select).select_by_value("cars"))
action.click(Select(type_element_select).select_by_value("cars"))
action.perform()

我得到的错误:

Traceback (most recent call last):
  File "D:\Python\selenium\test.py", line 27, in <module>
    action.move_to_element(Select(type_element_select).select_by_value("cars"))
  File "C:\Users\Umair\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\support\select.py", line 82, in select_by_value
    self._setSelected(opt)
  File "C:\Users\Umair\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\support\select.py", line 212, in _setSelected
    option.click()
  File "C:\Users\Umair\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webelement.py", line 80, in click
    self._execute(Command.CLICK_ELEMENT)
  File "C:\Users\Umair\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "C:\Users\Umair\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\Umair\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: Element <option> could not be scrolled into view

我也试试这个

types_element = driver.find_element_by_id("type")
types_object = Select(types_element)
types_object.select_by_visible_text("Cars")

但它也给了我同样的例外。 我怎样才能浏览这个网站? 已经看过并尝试过其他与 StackOverflow 相关的问题,但对我没有用。

【问题讨论】:

    标签: python selenium selenium-firefoxdriver


    【解决方案1】:

    您需要在全屏模式下使用浏览器:

    driver.maximize_window()
    

    以便 Selenium 可以看到所有 Web 元素。

    示例代码:

    PATH = "C:\SeleniumDrivers\geckodriver.exe"
    driver = webdriver.Firefox(executable_path=PATH)
    
    driver.maximize_window()
    driver.implicitly_wait(30)
    driver.get("https://file-tuning.com/chiptuning")
    wait = WebDriverWait(driver, 10)
    
    type_element_select = driver.find_element_by_id("type")
    action = ActionChains(driver)
    action.move_to_element(type_element_select)
    action.click(type_element_select)
    action.perform()
    action.move_to_element(Select(type_element_select).select_by_value("cars"))
    action.click(Select(type_element_select).select_by_value("cars"))
    action.perform()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2021-04-27
      • 2017-02-04
      相关资源
      最近更新 更多