我正在使用selenium自动化一个网站,该网站有一个登录和一系列用户应该填写的表格。我在" if-block"中设计了我的文档就绪状态。但是,我希望这是一个事件,以便它与默认Web浏览器控件的webbroswer_documentcompleted
事件类似。
我希望每次在我的代码中满足条件时都会引发一个事件。 此外,我希望活动一次。到目前为止,我只能从事件中引发手动事件(即在事件发生后检查事件) 我如何创建此活动。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System.Windows.Forms;
namespace Faster_Ticket_Attempt
{
public class WebBrowser
{
public static void Main(String[] args)
{
IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("SOME URL");
if (((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete"))
{
MessageBox.Show("we are ready");
}
}
}
}
答案 0 :(得分:0)
首先,您需要一个代表您的事件处理程序的委托:
public delegate void YourEventHandler(<your parameters, e.g. some EventArgs>);
然后,您必须声明事件:
public event YourEventHandler YourEvent;
最后,为了举起事件,你只需要调用它(但是,如果首先附加任何事件处理程序,请检查它):
if (YourEvent!= null)
YourEvent(<your event parameters>);
答案 1 :(得分:0)
(static) event Action webbroswer_documentcompleted;
(static) void webbroswer_documentcompleted_handler()
{
... do something
}
代码类型中的某处:
webbroswer_documentcompleted += webbroswer_documentcompleted_handler;
if(condition) webbroswer_documentcompleted(); // throw your event here
将委托Action更改为其他委托,例如EventHandler,以防您需要事件处理程序来接受参数。
您也可以使用lambda运算符,如下所示:
webbroswer_documentcompleted += () = >
{
... do something
};