#python #selenium #selenium-firefoxdriver
Вопрос:
Я пытаюсь очистить данные с этого динамического веб-сайта с настройкой файлов, который загружает данные с помощью запросов javascript (ajax).
что я хочу сделать, так это то, что он выбирает автомобили по типу, а затем итеративно выбирает марку, модель, двигатель, а затем я хочу очистить данные для каждой марки, модели и двигателя.
Вот код, который я пишу, чтобы выбрать автомобили из типа
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
PATH = "C:SeleniumDriversgeckodriver.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:Pythonseleniumtest.py", line 27, in <module>
action.move_to_element(Select(type_element_select).select_by_value("cars"))
File "C:UsersUmairAppDataLocalProgramsPythonPython39libsite-packagesseleniumwebdriversupportselect.py", line 82, in select_by_value
self._setSelected(opt)
File "C:UsersUmairAppDataLocalProgramsPythonPython39libsite-packagesseleniumwebdriversupportselect.py", line 212, in _setSelected
option.click()
File "C:UsersUmairAppDataLocalProgramsPythonPython39libsite-packagesseleniumwebdriverremotewebelement.py", line 80, in click
self._execute(Command.CLICK_ELEMENT)
File "C:UsersUmairAppDataLocalProgramsPythonPython39libsite-packagesseleniumwebdriverremotewebelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "C:UsersUmairAppDataLocalProgramsPythonPython39libsite-packagesseleniumwebdriverremotewebdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:UsersUmairAppDataLocalProgramsPythonPython39libsite-packagesseleniumwebdriverremoteerrorhandler.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, но у меня ничего не вышло.
Ответ №1:
Вам необходимо использовать браузер в полноэкранном режиме :
driver.maximize_window()
чтобы все веб-элементы были видны Селену.
Пример кода :
PATH = "C:SeleniumDriversgeckodriver.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()