2016-07-22 115 views
1

这里是元素的HTML代码:硒未能通过ID选择元素

<input maxlength="64" name="pskSecret" class="text" id="pskSecret" value="" size="32" type="text"> 

这里是我的Python代码,它试图将其选中:

self.driver.find_element_by_id("pskSecret").clear() 
self.driver.find_element_by_id("pskSecret").send_keys(data) # data is variable 

但是我得到异常,指出硒不能定位元素。 任何想法可能会导致问题

编辑:此外元素是在iframe中,但我正在访问其中正在工作的其他元素。

回答

0

可能是在您要查找元素时,由于计时问题,无法在DOM上加载元素。你应该尝试使用WebDriverWait等到元素如下可见: -

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



wait = WebDriverWait(self.driver, 10) 

input = wait.until(EC.visibility_of_element_located((By.ID, "pskSecret"))) 
input.clear() 
input.send_keys(data) 

注意: - 如果此元素是你需要使用self.driver.switch_to_frame("your frame id or name")

+0

呀找到元素之前切换该框架的任何框架内,我正在切换帧。然而由于某种原因,我得到了“分配之前的参考”输入。 –

+1

@DeyanGeorgiev这不是由硒代码发生的。我认为这是由于'data'变量..你正在错误地将值分配到全局变量'data' ..请看看这个链接..http://stackoverflow.com/questions/855493/referenced-before- assign ..hope它有帮助.. –

+0

我修正了错误,但是现在我得到了'By'没有属性'id' –