无法定位元素:硒

Unable to locate element: Selenium

我想 select 更多信息 link 单击它。我已经尽我所能,但每次错误 NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector" 弹出。

起初,我想可能是因为我没有正确更改选项卡,这就是显示此错误的原因。但是,即使在使用 window_handles 之后,我仍然无法在此页面上找到任何元素。

帮助

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

尝试wait for the element然后点击

替换

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

请使用包含和 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)

具有 ID

的 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

输出: