【问题标题】:Selenium webdriver Message: no such element: Unable to locate element - iFrame [duplicate]Selenium webdriver 消息:没有这样的元素:无法找到元素 - iFrame [重复]
【发布时间】:2020-12-05 00:53:18
【问题描述】:

我想点击号码时遇到问题。使用 Selenium 网络驱动程序。

这里是代码

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

chromedriver_location = 'chromedriver'

driver = webdriver.Chrome(chromedriver_location)
driver.get('site')

username_input = '/html/body/div[2]/div/div/form/div[1]/input'
password_input = '/html/body/div[2]/div/div/form/div[2]/input'
login_submit = '/html/body/div[2]/div/div/form/button'

driver.find_element_by_xpath(username_input).send_keys('username')
driver.find_element_by_xpath(password_input).send_keys('password')
driver.find_element_by_xpath(login_submit).click()

numbers = '/html/body/div[1]/div/div[3]/div/div[1]/div[5]/div'
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "/html/body/iframe")))
driver.find_element_by_xpath(numbers).click()

This is in iFrame and need to click on number 5

数字 5 的完整 xPath 是 /html/body/div[1]/div/div[3]/div/div[1]/div[5]/div

错误信息是:

Traceback(最近一次调用最后一次): 文件“”,第 1 行,在 driver.find_element_by_xpath(numbers).click() 文件“C:\Users\m\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 394 行,在 find_element_by_xpath return self.find_element(by=By.XPATH, value=xpath) 文件“C:\Users\m\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 976 行,在 find_element 返回 self.execute(Command.FIND_ELEMENT, { 文件“C:\Users\m\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 321 行,在执行中 self.error_handler.check_response(响应) 文件“C:\Users\m\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\errorhandler.py”,第 242 行,在 check_response 引发异常类(消息、屏幕、堆栈跟踪) selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“method”:“xpath”,“selector”:“/html/body/div1/div/div[3]/ div/div1/div[5]/div"} (会话信息:chrome=87.0.4280.88)

也试过

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, numbers))).click()

这个错误是

Traceback(最近一次调用最后一次): 文件“”,第 1 行,在 WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, numbers))).click() 文件“C:\Users\m\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\support\wait.py”,第 80 行,直到 引发 TimeoutException(消息、屏幕、堆栈跟踪) selenium.common.exceptions.TimeoutException:消息:

【问题讨论】:

    标签: python python-3.x selenium selenium-webdriver selenium-chromedriver


    【解决方案1】:

    先切换到 iframe:

    iframe=WebDriverWait(driver,  10).until(EC.presence_of_element_located((By.XPATH, "/html/body/iframe")))
    
    driver.switch_to.frame(iframe)
    
    driver.find_element_by_xpath(numbers).click()
    
    
    #REMAINING CODE TO INTERACT WITH ELEMENTS INISIDE IFRAME
    
    #once done exit from iframe
    
    driver.switch_to.default_content()  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多