enter image description here

Quiero seleccionar el enlace Más información haciendo clic en él. He intentado todo lo que pude, pero cada vez que aparece el error NoSuchElementException: no existe ese elemento: No se puede localizar el elemento: {"método": "xpath", "selector" aparece .

Al principio, pensé que tal vez porque no cambié las pestañas correctamente, es por eso que se muestra este error. Pero, incluso después de usar window_handles todavía no puedo localizar ningún elemento en esta página.

¡Por favor, AYUDA !

self.driver.window_handles
        base = self.driver.window_handles[0]        
        child = self.driver.window_handles[1]

        window_set = {self.driver.window_handles[0], self.driver.window_handles[1]}

for x in window_set:
        if(base != x):
            self.driver.switch_to.window(x)
            self.driver.find_element_by_id("mc-lnk-moreInfo").click() 
1
Mayukh Dasgupta 10 abr. 2020 a las 23:24

2 respuestas

La mejor respuesta

Verifique la solución a continuación utilizando contiene e ID

Xpath con contiene

 element= WebDriverWait(self.driver, 30).until(
            EC.element_to_be_clickable((By.XPATH, '//*[contains(text(), 'More information')]')))

 self.driver.execute_script("arguments[0].click();", element)

O

Xpath con ID

element= WebDriverWait(self.driver, 30).until(
        ec.element_to_be_clickable((By.ID, "//a[@id='mc-lnk-moreInfo']")))

 self.driver.execute_script("arguments[0].click();", element)

Solución de trabajo:

driver = webdriver.Chrome(executable_path=r"C:\New folder\chromedriver.exe")
driver.maximize_window()
wait = WebDriverWait(driver, 10)
driver.get("your url")
childframe = wait.until(EC.presence_of_element_located((By.NAME, "mainFrame")))
driver.switch_to.frame(childframe)
element=wait.until(EC.element_to_be_clickable((By.ID, "mc-lnk-moreInfo")))
print element.text
element.click()

Nota: agregue las siguientes importaciones a su solución

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

Salida: ingrese la descripción de la imagen aquí

0
Dipak Bachhav 11 abr. 2020 a las 14:49

Intente espere el elemento y luego haga clic en él

Reemplazar

self.driver.find_element_by_id("mc-lnk-moreInfo").click()

Con los siguientes

  self.more_info = WebDriverWait(self.driver, 30).until(
        ec.visibility_of_element_located((By.ID, "//a[@id='mc-lnk-moreInfo']")))
    ActionChains(self.driver).move_to_element(self.more_info).click().perform()

agregue lo siguiente con sus importaciones

from selenium.webdriver import ActionChains
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
0
0m3r 10 abr. 2020 a las 21:05