带有硒的Python:无法找到真正存在的元素 [英] Python with selenium: unable to locate element which really exist

查看:113
本文介绍了带有硒的Python:无法找到真正存在的元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在尝试填充输入:

I've been trying fill input:

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

为此,我必须找到该元素.

To do this, I have to find this element.

我尝试了以下操作:

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

pass1=driver.find_element_by_id("PASSFIELD1")

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]")(firebug的路径)

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]") (path from firebug)

甚至要等待100秒

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]"))

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:消息:'无法找到元素:(...)

selenium.common.exceptions.NoSuchElementException: Message: 'Unable to locate element: (...)

你知道我在做什么错吗?

Do you know what I am doing wrong?

推荐答案

问题是您的input标记位于iframe内部,您需要

The problem is that your input tag is inside an iframe, you need to switch to it first:

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

这篇关于带有硒的Python:无法找到真正存在的元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆