Невозможно найти элемент: Селен - PullRequest
1 голос
/ 10 апреля 2020

enter image description here

Я хочу выбрать ссылку Дополнительная информация , нажав на нее. Я перепробовал все, что мог, но каждый раз, когда появляется ошибка NoSuchElementException: такого элемента нет: невозможно найти элемент: {"method": "xpath", "selector" всплывает.

Сначала я подумал, может быть, потому что я не изменил вкладки должным образом, поэтому эта ошибка отображается. Но даже после использования window_handles все равно я не могу найти какой-либо элемент на этой странице.

Пожалуйста HELP !

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() 

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

Пожалуйста, проверьте ниже решение, используя содержит и ID

Xpath с содержит

 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)

или

Xpath с идентификатором

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)

Рабочий раствор:

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()

Примечание: , пожалуйста, добавьте ниже импорта в ваше решение

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

Вывод: enter image description here

0 голосов
/ 10 апреля 2020

Попробуйте дождаться элемента , затем щелкните по нему

Заменить

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

С помощью следующих символов

  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()

добавьте следующее к своим импортам

from selenium.webdriver import ActionChains
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
...