Невозможно найти элемент таблицы с помощью xpath в selenium

#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) или selenium EC после нажатия на выпадающий список и перед поиском вложенного элемента.