C# 使用Selenium在body onload之后单击动态生成的元素

C# 使用Selenium在body onload之后单击动态生成的元素,c#,javascript,selenium,C#,Javascript,Selenium,我将尽我所能向你转达我的情况,因为我能给你的日期有限 当点击创建一个新标签时,网页中有一个按钮,其HTML源代码如下所示 <HTML><HEAD><META content="IE=5.0000" http-equiv="X-UA-Compatible"> <TITLE>Report Viewer Webpage</TITLE> <META content="text/html; charset=windows-1252" htt

我将尽我所能向你转达我的情况,因为我能给你的日期有限

当点击创建一个新标签时,网页中有一个按钮,其HTML源代码如下所示

<HTML><HEAD><META content="IE=5.0000" http-equiv="X-UA-Compatible">
<TITLE>Report Viewer Webpage</TITLE>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
<SCRIPT src="javascript1.js"></SCRIPT>

<SCRIPT src="javascript2.js"></SCRIPT>

<SCRIPT src="anotherJavascript.js"></SCRIPT>
</HEAD>
<BODY onload="CallInit('ABC_DEFG_HIJKL_1_',''); window_onload();" onhelp=common_ShowHelp() leftMargin=0 topMargin=0 bgColor=#c6c6c6 currJsHelpVar="help_reports_viewer_dlg">
<OBJECT id=CRViewer codeBase="/viewer/activeXViewer/activexviewer.cab#Version=9,2,0,442" classid=CLSID:1123452WDUIHED:1325726GDUJBEA:12R432VD width="100%" height="99%" VIEWASTEXT>
<PARAM NAME="lastProp" VALUE="500">
<!--Bunch of other params go here-->
<PARAM NAME="_cx" VALUE="26987">
<SCRIPT language=VBScript>
<!--Some Business Logic-->
</SCRIPT>

<OBJECT id=ReportSource codeBase="/viewer/activeXViewer/activexviewer.cab#Version=9,2,0,442" classid=CLSID:1123452WDUIHED:1325726GDUJBEA:12R432VD width="1%" height="1%"></OBJECT>
<OBJECT id=ViewHelp codeBase="/viewer/activeXViewer/activexviewer.cab#Version=9,2,0,442" classid=CLSID:1123452WDUIHED:1325726GDUJBEA:12R432VD width="1%" height="1%"></OBJECT>
</BODY>
</HTML>

报表查看器网页
页面内容如下所示:

当然,这是一份水晶报告

我所要做的就是单击文本
预览
上方
打印按钮旁边整洁的
导出按钮

我正在使用Selenium自动化所有这些。但问题是,selenium只适用于HTML元素,我相信页面中的按钮是ActiveX控件或其他东西。它们仅在调用
标记的
onLoad
调用后加载

最大的限制之一是,这个应用程序只在IE中工作,IE开发者工具的功能不允许我检查按钮元素。IE开发者工具只是不把这些按钮看作HTML元素。它们不存在于IE开发工具中。顺便说一下,我正在使用IE9

在自动点击
Export
按钮方面,有什么帮助?任何javascript都会有帮助吗


当我查看此网页时,紧跟在
之后的第一个
占据了视图的所有空间。我认为随机生成的元素会动态地进入其中。

鉴于您显示的HTML代码,页面内容似乎是一个ActiveX

因此,您无法使用Selenium实现任何类型的自动化,正如您自己所说,Selenium只适用于HTML。

您可以尝试。它写在Selenium之上,并具有点击(x,y)坐标功能。我设法让它为Crystal report工作。如果你有任何问题,请告诉我


干杯,

有没有其他方法可以使用自定义javascript或类似的东西来实现目标?我什么都不知道。但是,QTP很容易处理这个问题。如果我只需要坚持使用Selenium,那么手动测试这些场景将是最好的方法,对吗?Selenium基于Webdriver协议-因此,基本上不支持与Web无关的任何内容。我不知道QTP是如何工作的,但它必须采用不同的策略。所以,要回答你的问题,无论是手动还是混合技术。。。但我不能给你任何建议,我不熟悉ActiveX技术。