找不到元素没有这样的元素

2024-10-03 23:20:34 发布

您现在位置:Python中文网/ 问答频道 /正文

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions import TimeoutException


driver = webdriver.Chrome()
driver.get('http://www.techfetch.com/JS/dashboard.aspx?page=fetchjobs')
time.sleep(5)
element = driver.find_element_by_xpath('//*[@id="txtKeyword"]')
element.send_keys("Java")

错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="txtKeyword"]"}
  (Session info: chrome=62.0.3202.94)
  (Driver info: chromedriver=2.29.461591 (62ebf098771772160f391d75e589dc567915b233),platform=Windows NT 6.1.7601 SP1 x86_64)

enter image description here

屏幕截图显示xpath正确且可用


Tags: fromimportidbytimedriverseleniumelement
2条回答

因为您尝试填写的输入字段位于iframe内。首先切换它,然后尝试执行之前所做的操作:

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get('http://www.techfetch.com/JS/dashboard.aspx?page=fetchjobs')
time.sleep(5)
driver.switch_to_frame(driver.find_element_by_id("contentframe"))  ##switch it
driver.find_element_by_xpath('//*[@id="txtKeyword"]').send_keys("Java") 

要将字符序列发送到Keywords框,首先需要wait使frame可以切换到它,然后找到Keywords框以发送字符序列,如下所示:

driver.get('http://www.techfetch.com/JS/dashboard.aspx?page=fetchjobs')
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(By.XPATH,"//iframe[@id='contentframe']"))
element = driver.find_element_by_xpath("//input[@id='txtKeyword']")
element.send_keys("Java")

相关问题 更多 >