如何检测网页弹出的窗口并下"确定"?
打开网页后弹出的窗口如何检测出来,并模拟鼠标点下"确定"?找了很多资料都没有头绪,再次麻烦大家一下了,谢谢!
这个窗口如图:
相关信息:
------解决方案--------------------
可以利用win32 API函数实现,不过有一点一定要注意:如果MessageBox的Caption为string.Empty,则比较麻烦,代码如下.
1.假设一个窗体中有如下代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show(this, "test", string.Empty, MessageBoxButtons.YesNo, MessageBoxIcon.Information);
if (result == DialogResult.Yes)
{
this.DialogResult = DialogResult.Yes;
this.Hide();
}
else
{
this.DialogResult = DialogResult.No;
this.Hide();
}
}
}
2.如果我想测试这段代码,因为有消息框,必须点击按钮才可以让剩下的代码(红色标识)继续运行,否则代码覆盖率太低,怎么办?
3.解决方案:在vs 2008下测试通过
[TestClass]
public class UnitTest1
{
private const uint BM_CLICK = 0xF5;
private enum GetWindowCmd : uint
{
GW_HWNDFIRST = 0,
GW_HWNDLAST = 1,
GW_HWNDNEXT = 2,
GW_HWNDPREV = 3,
GW_OWNER = 4,
GW_CHILD = 5,
GW_ENABLEDPOPUP = 6
}
public UnitTest1()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
private TestContext testContextInstance;
private Form1 form1;
private System.Timers.Timer timer;
private IntPtr frmHandler;
/// <summary>
///获取或设置测试上下文,该上下文提供
///有关当前测试运行及其功能的信息。
///</summary>
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
#region 附加测试属性
// 在运行每个测试之前,使用 TestInitialize 来运行代码
[TestInitialize()]
public void MyTestInitialize()
{
form1 = new Form1();
form1.Show();
form1.BringToFront();
}
//
// 在每个测试运行完之后,使用 TestCleanup 来运行代码
[TestCleanup()]
public void MyTestCleanup() { }
//
#endregion
[TestMethod]
public void TestMethod1()
{
//启动一个定时器,用于不断的捕获窗口
timer = new System.Timers.Timer();
timer.Interval = 100;
timer.E