#python #html #selenium #selenium-webdriver #python-requests
#python #HTML #selenium #selenium-webdriver #python-запросы
Вопрос:
Мне нужно выбрать строку на веб-странице с помощью selenium, и мой код не может найти элемент с помощью xpath. Для этого я использовал xpath флажка и попытался щелкнуть по нему. Это мой код.
#driver.find_element_by_xpath("/html/body/div/div/div/div[2]/div[2]/div/div[1]/table/tbody/tr[18]/td[1]/input").click()
chk= driver.find_element_by_id("/html/body/div/div/div/div[2]/div[2]/div/div[1]/table/tbody/tr[18]/td[2]")
chk.click()
#chck= driver.find_element_by_xpath("html body.nifty-ready div#container.effect div.boxed div#content-container.frame-container div.page-content")
И я получаю сообщение об ошибке:
NoSuchElementException Traceback (most recent call last)
<ipython-input-29-7c151851b480> in <module>()
66
67 #driver.find_element_by_xpath("/html/body/div/div/div/div[2]/div[2]/div/div[1]/table/tbody/tr[18]/td[1]/input").click()
---> 68 chk= driver.find_element_by_id("/html/body/div/div/div/div[2]/div[2]/div/div[1]/table/tbody/tr[18]/td[2]")
69 chk.click()
70
NoSuchElementException: Message: Unable to locate element: [id="/html/body/div/div/div/div[2]/div[2]/div/div[1]/table/tbody/tr[18]/td[2]"]
Пожалуйста, предложите лучший способ сделать это.
Комментарии:
1. Почему вы вызываете .find_element_by_id с xpath?
2. Как указано @JustinEzequiel, замените
.find_element_by_id
на.find_element_by_xpath
и он должен работать нормально.3. Выбор по идентификатору был опечаткой. Я использую только xpath. Но xpath не работает, селектор css все еще работает. Тем не менее, я должен перейти дальше во вложенные разделы и выбрать выпадающее меню
Ответ №1:
Это должно работать нормально.
chk = driver.find_element_by_xpath("/html/body/div/div/div/div[2]/div[2]/div/div[1]/table/tbody/tr[18]/td[2]")
chk.click()
chck = driver.find_element_by_css_selector("html body.nifty-ready div#container.effect div.boxed div#content-container.frame-container div.page-content")
Комментарии:
1. Это будет полезно, если вы прочтете документацию.
2. chck = driver.find_element_by_css_selector(«html body.готовый div #контейнер.эффект div.упакованный div#content-container.фрейм-контейнер div.страница-содержимое div: n-й дочерний (3) div.pad-все div») chck.click() Я пытаюсь получить доступ к этому элементу с помощью селектора css, но он не идет дальше, чем div.page-content. Я не хочу открывать выпадающее меню, и путь к нему следующий — #content-container> div.page-content> div: nth-child(3) > div.pad-all> div> кнопка
3. Я получаю эту ошибку: Исключение NoSuchElementException: Сообщение: нет такого элемента: не удается найти элемент: {«метод»: «селектор css», «селектор»: «html body.изящный готовый div #контейнер.эффект div.упакованный div#content-container.frame-container div.страница-содержимое div.panel div.pad-все»} (Информация о сеансе: chrome = 86.0.4240.193)
4. Ах, если это выпадающий список, то вам нужно подождать некоторое время, прежде чем находить вложенные элементы, чтобы они были доступны в DOM. Используйте
time.sleep(2)
или seleniumEC
после нажатия на выпадающий список и перед поиском вложенного элемента.