Selenium webdriver no encuentra el elemento Bandeja de entrada

Chocando esto desde hace dos meses ya que no he encontrado una solución. Estoy usando el controlador de Firefox para encontrar y luego hacer clic en un hipervínculo llamado “Bandeja de entrada”, pero después de bashs exhaustivos, Selenium aún no puede encontrar el elemento. Cualquier ayuda sería apreciada, ya que realmente no he podido encontrar una razón por la que Selenium webdriver no pueda encontrar el elemento.

En el siguiente código HTML, he considerado que podría haber un marco pero no se puede encontrar ninguno; Si alguien pudiera confirmar que, de hecho, no hay un marco en el siguiente código, ¡eso sería apreciado! También tengo un time.sleep(40) en mi script para permitir suficiente tiempo para que webdriver encuentre el elemento. Entonces, me estoy quedando sin ideas, pero ¿estaba pensando que tal vez el elemento #text (“& nbsp”) justo antes del elemento de hipervínculo “bandeja de entrada” podría estar causando el problema al ocultar el elemento “bandeja de entrada”? Cualquier consejo sobre cómo proceder sería apreciado; todos mis bashs de resolución se enumeran a continuación.

A continuación se muestra mi código hasta que aparece este problema de elemento (la URL se ha eliminado porque es de propiedad exclusiva):

 from selenium import webdriver import time driver = webdriver.Firefox() driver.get("[URL REMOVED]") time.sleep(2) elem1 = driver.find_element_by_css_selector('#main-content > div > div.col-md-4.radix-layouts-sidebar.sidebar-right.panel-panel.sidebar > div > div.panel-pane.pane-entity-field.pane-it-service-field-related-services.block > div > div > ul > li:nth-child(1) > a') elem1.click() #Logging in time.sleep(40) #Now in the System, click on Inbox Button elem2 = driver.find_element_by_??? # Trying to figure out this code to find inbox element elem2.click() 

He intentado lo siguiente al tratar de encontrar el elemento:

 find_element_by_xpath('//td[@class='MENUCHOICE']//a[@href="https://stackoverflow.com/questions/52618687/selenium-webdriver-is-not-finding-the-inbox-element/main.do?action=inbox"]') find_element_by_xpath('/html/body/table/tbody/tr[6]/td/a') find_element_by_link_text('Inbox') find_element_by_partial_link_text('Inb') find_element_by_css_selector('body > table > tbody > tr:nth-child(6) > td > a') find_element_by_css_selector("td.MENUCHOICE a[href='https://stackoverflow.com/questions/52618687/selenium-webdriver-is-not-finding-the-inbox-element/main.do?action=inbox']") 

Todos los localizadores que he intentado generan ‘selenium.common.exceptions.NoSuchElementException: Mensaje: no hay tal elemento: No se puede localizar el elemento’

No puedo proporcionar el enlace a la página, ya que es de propiedad exclusiva, pero a continuación, proporcioné el HTML de la página en caso de que alguien pueda ayudar (el elemento de interés está debajo de la segunda clase de MENUCHOICE: Bandeja de entrada):

         UDM - Notification System  td.MENU1 { FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; FONT-SIZE: 18pt; FONT-WEIGHT: medium; color: navy; } td.MENU2 { FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; FONT-SIZE: 15pt; FONT-WEIGHT: medium; color: navy; } td.MENUCHOICE { FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; FONT-SIZE: 14pt; FONT-WEIGHT: medium; color: blue; }    

Gracias por la ayuda.

Para hacer clic en el elemento con texto como Bandeja de entrada , puede utilizar cualquiera de las siguientes soluciones:

  • css_selector :

     find_element_by_css_selector("td.MENUCHOICE a[href='main.do?action=inbox']") 
  • xpath :

     find_element_by_xpath("//td[@class='MENUCHOICE']//a[@href='main.do?action=inbox' and contains(.,'Inbox')]") 

Este problema fue resuelto hace un mes. Resulta que para esta aplicación web en particular, Selenium webdriver necesitaba tener un enlace directo desde el primer momento; De lo contrario, no “reconocería” la página en la que estaba. Esta aplicación web generalmente no está vinculada directamente; Por lo general, usted va a través de una página intermedia que tiene el enlace publicado.

Resolví esto dirigiendo Selenium a la aplicación web directamente, en lugar de ir primero a la página del intermediario y hacer clic en el enlace de la aplicación web. Es decir:

  from selenium import webdriver import time driver = webdriver.Firefox() driver.get("[DIRECT LINK INSTEAD OF INTERMEDIARY PAGE LINK]") 

Espero que esto ayude a alguien con un problema similar en el futuro.