Selenium Web驱动程序消息:没有这样的元素:无法定位元素-iFrame



我想点击数字时遇到问题。使用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()

这是在iFrame中,需要点击数字5

编号5的完整xPath是/html/body/div[1]/div/div[3]/div/div[1]/div[5]/div

错误消息为:

Traceback(最后一次调用(:文件"<pyshell#25>";,第1行,在driver.find_element_by_xpath(数字(.click((文件";C: \Users\m\AppData\Local\Programs\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\Python39\lib\site packages\selenium\webdriver\remote\webdriver.py",第976行,在find_element中return self.execute(Command.FIND_ELEMENT{文件";C: \Users\m\AppData\Local\Programs\Python39\lib\site packages\selenium\webdriver\remote\webdriver.py",第321行,执行中self.error_handler.check_response(响应(文件";C: \Users\m\AppData\Local\Programs\Python39\lib\site packages\selenium\webdriver\remote\errorhandler.py",第242行,在check_response中引发exception_class(消息、屏幕、堆栈(selenium.com.mon.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{"方法":"xpath","选择器":"/html/body/div1/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(最后一次调用(:文件"<pyshell#26>";,第1行,在WebDriverWait(驱动程序,10(.intill(EC.element_to_be_clickle((By.XPATH,numbers(((.click((文件";C: \Users\m\AppData\Local\Programs\Python39\lib\site-packages\selenium\webdriver\support\wait.py",第80行,直到引发超时异常(消息、屏幕、堆栈(selenium.com.mon.exceptions.TimeoutException:消息:

先切换到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()  

最新更新