Для WebElement, запрошенного из веб-драйвера Selenium, когда я получаю get_attribute('outerHTML'), он печатает
. . .
. . .
но когда я пытаюсь получить первый элемент TD с помощью
element.find_element(By.XPATH, "./tr/td[1]")
Я получаю исключение
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"./tr/td[1]"}
Также вместо того, чтобы делать
first_row = table.find_element(By.XPATH, ".//tbody/tr[1]")
first_col = first_row.find_element(By.XPATH, ".//tr/td[1]")
если я напрямую запрашиваю элемент td с помощью
first_col = table.find_element(By.XPATH, ".//tbody/tr[1]/td[1]")
тогда это работает.
Мне кажется, это не имеет никакого смысла. Это на сайте https://www.bseindia.com/corporates/ann.html. Чтобы воспроизвести проблему, pip установите следующие пакеты Python:
webdriver_manager
undetected-chromedriver
seleniumbase
и запустите следующий код Python
import undetected_chromedriver as uc
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
ANNOUNCEMENTS_URL = f"https://www.bseindia.com/corporates/ann.html"
options = webdriver.ChromeOptions()
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.5249.119 Safari/537.36'
options.add_argument('user-agent={0}'.format(user_agent))
options.add_argument('--disable-cache')
driver = uc.Chrome(
options=options,
service=ChromeService(ChromeDriverManager().install()))
driver.get(ANNOUNCEMENTS_URL)
corp_ann_tables = driver.find_elements(By.XPATH, "//table[@ng-repeat='cann in CorpannData.Table']")
first_row = corp_ann_tables[0].find_element(By.XPATH, ".//tbody/tr[1]")
print('Row=' + first_row.get_attribute('outerHTML'))
company_name_and_artile_title = first_row.find_element(By.XPATH, ".//tr/td[1]")
print(company_name_and_artile_title)
Подробнее здесь: https://stackoverflow.com/questions/798 ... ments-tree
XPath не работает при использовании пути, который явно существует в дереве элементов [закрыто] ⇐ Python
Программы на Python
1766022508
Anonymous
Для WebElement, запрошенного из веб-драйвера Selenium, когда я получаю get_attribute('outerHTML'), он печатает
. . .
. . .
но когда я пытаюсь получить первый элемент TD с помощью
element.find_element(By.XPATH, "./tr/td[1]")
Я получаю исключение
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"./tr/td[1]"}
Также вместо того, чтобы делать
first_row = table.find_element(By.XPATH, ".//tbody/tr[1]")
first_col = first_row.find_element(By.XPATH, ".//tr/td[1]")
если я напрямую запрашиваю элемент td с помощью
first_col = table.find_element(By.XPATH, ".//tbody/tr[1]/td[1]")
тогда это работает.
Мне кажется, это не имеет никакого смысла. Это на сайте https://www.bseindia.com/corporates/ann.html. Чтобы воспроизвести проблему, pip установите следующие пакеты Python:
webdriver_manager
undetected-chromedriver
seleniumbase
и запустите следующий код Python
import undetected_chromedriver as uc
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
ANNOUNCEMENTS_URL = f"https://www.bseindia.com/corporates/ann.html"
options = webdriver.ChromeOptions()
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.5249.119 Safari/537.36'
options.add_argument('user-agent={0}'.format(user_agent))
options.add_argument('--disable-cache')
driver = uc.Chrome(
options=options,
service=ChromeService(ChromeDriverManager().install()))
driver.get(ANNOUNCEMENTS_URL)
corp_ann_tables = driver.find_elements(By.XPATH, "//table[@ng-repeat='cann in CorpannData.Table']")
first_row = corp_ann_tables[0].find_element(By.XPATH, ".//tbody/tr[1]")
print('Row=' + first_row.get_attribute('outerHTML'))
company_name_and_artile_title = first_row.find_element(By.XPATH, ".//tr/td[1]")
print(company_name_and_artile_title)
Подробнее здесь: [url]https://stackoverflow.com/questions/79845033/xpath-not-working-when-using-a-path-that-clearly-exists-in-the-elements-tree[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия