【问题标题】:Cannot use console in Chrome Dev tools in the Chrome window controlled by selenium chrome driver无法在由 selenium chrome 驱动程序控制的 Chrome 窗口中的 Chrome 开发工具中使用控制台
【发布时间】:2019-10-02 02:29:15
【问题描述】:

我可以在普通 Chrome 窗口中使用 Chrome 开发工具中的控制台来调试 xpath,例如 $x("//div") 来调试 xpath。 但是当 Selenium-Chrome-Driver 在 C# SpecFlow 中生成一个 Chrome 窗口时,在这个 Chrome 窗口中,我无法在控制台中通过输入 $x("//div") 调试 xpath,控制台报错:

$x("//div") VM1819:1 未捕获的类型错误:$x 不是函数 在:1:1

已经尝试过以下代码来开启某些 ChromeOptions,但遇到了同样的问题。

ChromeOptions options = new ChromeOptions();
string user_data_dir = settings.SelectSingleNode("//LoginEmail/ChromeUserDataDir").InnerText;
user_data_dir = String.Format(@"user-data-dir={0}", user_data_dir);
options.AddArgument(user_data_dir);
options.AddArgument(@"--enable-devtools-experiments");
options.AddArgument(@"--auto-open-devtools-for-tabs");
webDriver = new ChromeDriver(options);

【问题讨论】:

  • 对不起,我弄错了。在访问 gmail 以外网站的普通 Chrome 窗口中,我可以使用 Chrome 开发工具中的控制台来调试 xpath,在访问 gmail 的 Chrome 窗口中,我无法使用控制台来调试 xpath,错误消息:Uncaught TypeError: $x is not a :1:1 处的函数;似乎gmail网站禁用了控制台功能!但它如何做到这一点,并且可以重新启用控制台?

标签: selenium selenium-chromedriver specflow


【解决方案1】:

我找到了另一种在由specflow中的chromedriver控制的chrome窗口中的开发工具控制台中调试xpath的方法

使用 javascript:

document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.outerHTML

例如:

document.evaluate("//a[contains(@href, 'mail.google.com') and contains(@href,'#drafts')]/../../div[1]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.outerHTML

【讨论】:

    猜你喜欢
    • 2017-05-01
    • 1970-01-01
    • 2018-06-28
    • 2017-01-09
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多