python - 使用 Selenium 选择框架

标签 python selenium

所以我正在尝试使用 selenium 选择一个框架。我在 stackoverflow 上找到了许多与此相关的示例和类似问题。

他们都指出,要选择框架中的元素,您首先必须“移动”到该框架,然后获取您想要的元素。 但我似乎无法获得我想要的框架。

我读过的所有帖子都说使用:

driver.switch_to.frame("contentfrm") # Fetch by name, or
driver.switch_to.frame(1) # Fetch by index

所以我尝试了所有这些,无论我使用什么,我总是得到一个错误,说它找不到框架,selenium.common.exceptions.NoSuchFrameException: Message: Unable to locate frame: contentfrm

python 代码:

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()

driver.get("http://10.0.0.2/html/content1.asp")
driver.get("10.0.0.2")

elem = driver.find_element_by_name("Username")
elem.send_keys("admin")

elem = driver.find_element_by_name("Password")
elem.send_keys("admin2")

elem.send_keys(Keys.ENTER)

# ----
driver.switch_to.default_content()
driver.switch_to.frame("contentfrm")
# elem = driver.find_element_by_id("m8")

# driver.quit()

HTML代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Quick Start</title>
</head>

<frameset onload="load()" rows="0,*" frameborder="0" border="0" framespacing="0">
    <frame name="topFrame" scrolling="no" src="../main/refresh.asp" __idm_frm__="200"></frame>
    <frame name="contentfrm" id="contentfrm" __idm_frm__="201"></frame>
</frameset>

</html>

注意:在我必须选择框架之前,代码可以正常工作。

知道为什么会这样

最佳答案

如果没有相关网站,很难确定问题出在哪里,但我会做出一些假设:

  • 您的框架集正在对函数 load() 执行一些 javascript,当您尝试查找这些元素时,这可能会使这些元素不可用。

  • 您获取的框架元素没有 src 属性,因此它没有内容

  • 也许函数 switchto.frame() 中的选择并不像您认为的那样工作。

为了安全起见,最好等待元素可见,然后通过 xpath 选择它

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, "//frame[@name='contentfrm']"))
)
driver.switch_to.frame(element)

关于python - 使用 Selenium 选择框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37546675/

相关文章:

python - Python 类 二叉搜索树

python - 如何通过 Python Selenium 选择下拉菜单中的 href 选项?

java - 如何在selenium java中通过断言验证动态表

python - 如何使用 NumPy 正确从 SQL 数据库读取字符串

python psycopg2 条件插入语句

python - 我想使用 PyQt5 制作计算器机器人,但出现错误

Python:从 Notepad++ 运行代码到 Python 控制台

java - 查找特定属性,Selenium Xpath Java

java - 单击事件在浏览器中直接运行脚本时有效,但在弹出窗口中访问相同的 UI 时无效

javascript - Selenium 的 PhantomJS Webdriver 未在 ReactJS 中加载页面