【发布时间】:2018-02-20 22:44:11
【问题描述】:
我正在尝试使用 Selenium WebDriver 在网页上选择名为 cslLogin 的链接。它位于一个名为topframe 的子框架中,但我无法访问它,即使在我切换到它的父框架TopLevelFrame 之后我也可以成功完成。 html 页面具有以下基本布局:
<html>
<head>...</head>
<frameset name="ATopLevelFrameSet">
<frame name="TopLevelFrame">
#document
<html>
<head></head>
<frameset name="Aframeset">
<frame name="topframe">
#document
<html>
<head>...</head>
<body class="clsBgColor">
<table id="tblTitle">
<tbody>
<tr class="clsBackYellow"">
<td class="clsDeviceStatusLink">
<a class="clsLogin" href="javascript:void(0);"
onclick="javascript:fnnLoginClick();">Login</a> == $0
etc...
我可以使用self.driver.switch_to.frame("TopLevelFrame") 成功切换到TopLevelFrame,但我无法访问topframe 或clsLogin(我分别得到NoSuchFrameException 和NoSuchElementException)
我试过find_element_by_name、find_element_by_xpath、find_element_by_link_text、find_element_by_css_selector,也用过
try:
element = WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located((By.NAME, "TopLevelFrame"))
)
finally:
self.driver.quit()
如果这是时间/页面加载问题,但在页面加载后很长时间超时。
我从其他帖子中知道,我需要先切换到最近的框架,然后才能访问该元素,但这当然行不通。有什么建议么?提前致谢。
【问题讨论】:
-
发布完整代码,而不仅仅是方法名称。阅读minimal reproducible example指南。
标签: python selenium webdriver nosuchelementexception