Извлечение определенных элементов из таблицы с помощью Selenium в PythonPython

Программы на Python
Anonymous
Извлечение определенных элементов из таблицы с помощью Selenium в Python

Сообщение Anonymous »

Я пытаюсь извлечь определенные данные из таблицы, отображаемой на веб-сервере устройства.
Я сталкиваюсь с ошибкой при выполнении кода, который, похоже, не могу понять.
Я считаю, что возникает ошибка при попытке найти определенный элемент в столбце таблицы, который является недопустимым выражением.
Любая помощь по этой проблеме будет принята с благодарностью.
Спасибо.
С уважением

Код: Выделить всё

import selenium.webdriver as webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.edge.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC

##user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0'
##edge_driver_path = os.path.join(os.getcwd(), 'msedgedriver.exe')
edge_driver_path = "msedgedriver.exe"
edge_service = Service(edge_driver_path)
edge_options = Options()
edge_options.add_experimental_option('excludeSwitches', ['enable-logging'])
edge_options.add_experimental_option("detach", True)

service = webdriver.EdgeService(log_output="C:/Users/Desktop/WebScraper/tutorial")

browser = webdriver.Edge(service=edge_service, options=edge_options)
browser.get('ipaddress')
WebDriverWait(browser, 60).until(EC.presence_of_element_located((By.ID, "ANALOGINPUTSR0C2")))

comp_table = browser.find_element(By.XPATH,"//table[@id='ANALOGINPUTSbody']")
comp_table_row = comp_table.find_element(By.XPATH,"//tr[contains(@class,'row')]")
comp_table_element = comp_table_row.find_element(By.XPATH,"//td(@id='ANALOGINPUTSR0C2')")

print(comp_table_element.text)
Ошибка показана ниже
Файл «c:\Users\Desktop\WebScraper\tutorial\tutorial.py», строка 29, в
comp_table_element = comp_table_row. find_element(By.XPATH,"//td(@id='ANALOGINPUTSR0C2')")
^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Файл "C: \Users\Desktop\WebScraper\tutorial.venv\Lib\site-packages\selenium\webdriver\remote\webelement.py", строка 417, в find_element
return self._execute(Command.FIND_CHILD_ELEMENT, {"using" : by, "value": value})["value"]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Файл "C:\ Users\Desktop\WebScraper\tutorial.venv\Lib\site-packages\selenium\webdriver\remote\webelement.py", строка 395, в _execute
return self._parent.execute(command, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Файл "C:\Users\Desktop \WebScraper\tutorial.venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", строка 347, в выполнении
self.error_handler.check_response(response)
Файл "C:\ Users\Desktop\WebScraper\tutorial.venv\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", строка 229, в check_response
raiseException_class(message, screen, stacktrace)
selenium .common.Exceptions.JavascriptException: Сообщение: ошибка javascript: {"status":32,"value":"Невозможно найти элемент с выражением xpath //td(@id='ANALOGINPUTSR0C2') из-за следующей ошибки: \nSyntaxError: Не удалось выполнить «оценку» для «Документа»: строка «//td(@id='ANALOGINPUTSR0C2')» не является допустимым выражением XPath.»(Информация о сеансе: MicrosoftEdge=125.0. 2535.51)
Я пробовал разные выражения XPath, но именно это помогло мне сузить проблему.

Подробнее здесь: https://stackoverflow.com/questions/785 ... -in-python

Вернуться в «Python»