gpt4 book ai didi

perl - Selenium:FF 和 Chrome 之间的不同帧处理?

转载 作者:行者123 更新时间:2023-12-02 04:57:06 25 4
gpt4 key购买 nike

我有一个与 Firefox 配合良好的 Selenium 2.0 测试系统。页面的组织方式如下:

<html>
<head>
<frameset> 35,* rows
<frame> 'Header' 35 rows H x full width
<frameset> 182,* cols
<frame> 'TOC' remaining rows H x 182 cols W
<frameset> *,0,0 rows
<frame> 'Main' remaining rows H x remaining cols W
<frame> 'HiddenFrame' 0 rows H x remaining cols W
<frame> 'UploadFrame' 0 rows H x remaining cols W

(请不要为此责备我......我没有写它,我无法更改它。我只需要测试它。)

无论如何,我的代码(Perl Selenium::Remote::Driver 0.17 语言绑定(bind),2.38.0 服务器)基本上加载页面然后执行 $driver->switch_to_frame(); $driver->switch_to_frame('TOC');.它在 Firefox 中运行良好,但在 Chrome 中,成功加载页面后,它返回“服务器返回状态代码 204 但没有数据”并且它不会进入 TOC(导航)框架,因此我可以点击链接。控制台错误消息提到“没有这样的框架”。

Chrome(或使用 Chrome 的 Selenium)是否对框架做了一些不同的事情?请注意,这些不是iframe,而是老式的框架。如有必要,我可以更改测试代码以根据浏览器模型执行不同的操作。谢谢!

添加:这是顶级 HTML:

<html>
<head>
<frameset rows="35,*" framespacing="0" frameborder="NO" border="0">
<frame scrolling="NO" src="title.php" noresize="" name="Header" marginwidth="0" marginheight="0" frameborder="no">
<frameset cols="182,*" framespacing="2" frameborder="no" border="0">
<frame scrolling="auto" src="toc.php" name="TOC" marginwidth="2" marginheight="8" frameborder="no">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html> ... navigation frame
<head>
<body> ... links to expand/collapse categories, and page links
</html>
</frame>
<frameset rows="*,0,0" framespacing="0" frameborder="no" border="0">
<frame src="Welcome.php" name="Main" marginwidth="2" marginheight="10" frameborder="no">
<!DOCTYPE html>
<html> ... main content
<head>
<body> ... forms, output, buttons, etc.
</html>
</frame>
<frame src="javascript:''" name="HiddenFrame" frameborder="no">
<frame src="javascript:''" name="UploadFrame" frameborder="no">
</frameset>
</frameset>
<noframes>
<body bgcolor="#fff9f1" link="#0000ff" vlink="#0000ff" alink="#0000ff">
<p> Your browser does not support frames. The Administrator supports Netscape and Internet Explorer version 4.0 or later. </p>
</body>
</noframes>
</frameset>
</html>

这是一个专有系统和脚本语言(不是真正的 .php),不能公开访问,所以我希望这足以弄清楚发生了什么。非常感谢,如果你能发现 Chrome 不喜欢的东西,那么 Firefox 就没有问题。使用建议的解决方法 ($ele = $driver->find_element("//frame[@name='TOC']"); $driver->switch_to_frame($ele);,我可以得到进入目录框架,但我不能对“主”框架做同样的事情。

最佳答案

Chrome 和 Firefox 之间的框架处理没有区别。我确实知道有时您可以使用“ native 操作”运行 Firefox,理论上,如果您这样做可能会有所不同,但很可能听起来您并没有这样做。所以,我可能是错的,但在这两种情况下,我相信 Selenium 很可能只是使用 Javascript 来定位框架。

我认为解决此问题的唯一方法是编写一个简单的测试示例来重现您认为遇到的问题。你可以在 GitHub 上分享它。那么,有了这个例子作为问题的证据,我想人们会更愿意提供帮助。

关于perl - Selenium:FF 和 Chrome 之间的不同帧处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20549054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com