Python与selenium:无法找到真正存在的元素

时间:2014-06-23 15:04:36

标签: python selenium selenium-webdriver

我一直在尝试填充输入:

<input id="PASSFIELD1" class="logField" type="password" onkeyup="next(this, event);" maxlength="1" autocomplete="off" name="PASSFIELD1"></input>

要做到这一点,我必须找到这个元素。

我尝试了下面的事情:

  1. pass1=driver.find_element_by_name("PASSFIELD1")

  2. pass1=driver.find_element_by_id("PASSFIELD1")

  3. pass1= driver.find_element_by_xpath("/html/body/div[4]/div/div/div[2]/div/form/div[3]/table/tbody/tr[3]/td[2]/div/input[1]")(来自萤火虫的路径)

  4. 甚至等待100秒

  5. self.wait.until(EC.visibility_of_element_located((By.XPATH,"/html/body/div[4]/div/div/div[2]/div/form/div[3]/table/tbody/tr[3]/td[2]/div/input[1]"))) self.assertTrue(self.driver.find_element_by_xpath("/html/body/div[4]/div/div/div[2]/div/form/div[3]/table/tbody/tr[3]/td[2]/div/input[1]"))

    我总是得到:

      

    selenium.common.exceptions.NoSuchElementException:消息:'无法找到元素:(...)

    你知道我做错了吗?

2 个答案:

答案 0 :(得分:25)

问题是您的input标记位于iframe内,您需要首先switch to

frame = driver.find_element_by_xpath('//frame[@name="main"]')
driver.switch_to.frame(frame)
pass1 = driver.find_element_by_id("PASSFIELD1")

答案 1 :(得分:1)

给驱动程序增加一些延迟,以便元素可以加载。

import time
time.sleep(2)
department_element = driver.find_elements_by_id("__id_name__")