所以我试着用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代码:
^{pr2}$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操作,这可能会使元素在您尝试查找时不可用。您得到的frame元素没有src
属性,因此它将没有内容也许函数
switchto.frame()
中的选择并没有像您想象的那样工作。为了安全起见,最好等待元素可见,然后通过xpath选择它
正如@Rafael所说,最好使用不同的定位器,您应该检查on load()javascript在做什么。不过,我建议使用帧的id作为定位器,而不是将xpath用作帧名称。在
相关问题 更多 >
编程相关推荐