【问题标题】:Selenium Webdriver not returning Javascript codeSelenium Webdriver 不返回 Javascript 代码
【发布时间】:2016-06-09 07:57:02
【问题描述】:

您好,我是 Selenium Webdriver 的新手。我可以成功打开一个网页并找到其中的元素。

在一种情况下,我注意到页面上有一个链接在一段时间后变得可点击。在脚本选项卡上的 Firebug 中,我可以看到执行计时器功能的 javascript 代码。

但如果我发出,则使用 Selenium Webdriver:

driver.PageSource

我看不到 Javascript 的源代码。在请求源之前延迟 30 秒没有任何区别。我尝试使用各种 By 选项找到它:

driver.FindElement

等等,但它不存在。

firebug 如何找到并显示 Javascript 源代码?有没有办法强制 Selenium Webdriver 返回页面引用的所有代码?

或者有更好的方法吗?

感谢您的建议!

编辑---------

我在 Firefox 中尝试了以下操作:

Dim Driver2 As IWebDriver = New Chrome.ChromeDriver
Driver2.Url = "http://mypage" 
Dim js As IJavaScriptExecutor = TryCast(Driver2, IJavaScriptExecutor)
Dim title As String = DirectCast(js.ExecuteScript("return JSON.stringify(window)"), String)

我得到了

访问属性“toJSON”的权限被拒绝

我读到这在 firefox 中不起作用,所以我在 Chrome 中尝试,并得到了

阻止来源为“http://mypage”的框架访问 跨域框架

从那里没有解决方案,因为根据this 这是一个安全限制,显然你不能使用 Javascript 访问

我开始认为我在这里有点超出我的深度。

【问题讨论】:

    标签: c# selenium firefox selenium-webdriver webdriver


    【解决方案1】:

    PageSource 可能不会返回 DOM 等的确切快照。

    您可以改为使用 driver.executeScript() 检查 javascript,但分析返回对象的负担可能令人沮丧。

    无论如何 - 这是一个人为的例子:

    Object result = driver.executeScript("return JSON.stringify(window)");
    System.out.println(result.toString());
    

    【讨论】:

    • 非常感谢您的回答。我试过了,但遇到了一些问题,请参阅修改后的问题。
    猜你喜欢
    • 2016-03-27
    • 1970-01-01
    • 2020-12-17
    • 2011-07-31
    • 1970-01-01
    • 2013-01-12
    • 2014-09-08
    • 1970-01-01
    • 2018-05-20
    相关资源
    最近更新 更多