c# - Selenium EventFiringWebDriver 导航事件

标签 c# selenium selenium-webdriver

我正在使用 Selenium 网络驱动程序,我想监听浏览器中发生的事件。例如,当页面上的某些 javascript 使用 window.location = "...";

导致 url 更改时

我有一个监听器附加到我的 EventFiringWebDriverNavigated 事件。但是当浏览器的 url 更改时,这将无法触发。我由此推断,Selenium 不能以这种方式收听事件?

是否有适当的方法附加到浏览器或来自浏览器的 DOM 事件?

最佳答案

我能够使用 OpenQA.Selenium.Support.UI.WebDriverWait 对象来实现这一点。我只需要指定谓词(浏览器 url 上的比较)和时间跨度。 Selenium 每 500 毫秒检查一次结果,直到它返回 true 或时间跨度过去,在这种情况下测试失败。不是完全由事件驱动,但它具有预期的效果:

    private readonly IWebDriver _driver = new FirefoxDriver();

    [Test]
    public void UrlIsCorrect()
    {
        var w = new WebDriverWait(_driver, TimeSpan.FromSeconds(30));
        w.Until(driver => driver.Url == "http://test.com");
    }

关于c# - Selenium EventFiringWebDriver 导航事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15223001/

相关文章:

java - how = Selenium 中的 How.ID

c# - 这个对象初始化器模式叫什么?

java - 日历取件日期格式问题

c# - System.Drawing.Bitmap(int32,int32) 参数在 WPF 中无效但在 win 窗体中无效

python - Chrome 性能日志消息中的时间戳格式是什么?

selenium - 尝试通过网络路径访问 chromedriver 时,CreatePlatformSocket() 返回错误 : An invalid argument was supplied. (0x2726)

java - 如何使用Selenium WebDriver清除JS输入的值?

java - 我的 selenium 代码无法在 IE 11 上运行

c# - F# GUI问题(将C#翻译成F#)

c# - 使用比我需要调用的方法更少受约束的泛型类型实现接口(interface)