如何在本地网页(在我的 PC 上)上使用 Selenium WebDriver 而不是位于在线某处的网页?

Posted

技术标签:

【中文标题】如何在本地网页(在我的 PC 上)上使用 Selenium WebDriver 而不是位于在线某处的网页?【英文标题】:How to use Selenium WebDriver on local webpage (on my PC) instead of one located somewhere online? 【发布时间】:2013-08-01 03:02:01 【问题描述】:

我想在我硬盘上的网页上使用 Selenium WebDriver。我试过类似的东西:

selenium = new WebDriverBackedSelenium(driver, "C:\\...dispatcher.html");

...而不是正常的:

selenium = new WebDriverBackedSelenium(driver, "http://www.dunnowhattodo.org");

...但它不起作用(我收到错误“未知协议:c”)。

【问题讨论】:

它之前可能需要file:// 协议...你试过了吗? 不,我没试过:file://C://...应该这样吗? @Bartosz Wygledacz: code.google.com/p/selenium/issues/detail?id=3997 【参考方案1】:

在 selenium 会话期间,您始终可以在打开的 Web 浏览器上从您的 PC 拖放 html 文件,并查看文件路径的外观。在我的情况下是:

webdriver.get("file:///C:/Users/Desktop/Some%20%E2%80%93%20file%20on%20the%20PC.html")

【讨论】:

【参考方案2】:

硒版本:3.141.59

使用这个 webdriver.get("file:///D:/folder/abcd.html") 会失败。

而不是webdriver.get("///D:/folder/abcd.html") 获取成功。

【讨论】:

【参考方案3】:

这也可以通过相关文件来完成:

Path sampleFile = Paths.get("sample.html");
driver.get(sampleFile.toUri().toString());

【讨论】:

【参考方案4】:

对于我们这些使用java.nio 的人,我们还可以执行以下操作:

webdriver.get("file:\\\\\\" + filePath);

...其中filePathjava.nio.file.Path 类型的对象,表示绝对 路径。

【讨论】:

【参考方案5】:

试试这个方法:

webdriver.get("file:///D:/folder/abcd.html");

(或)

selenium = new WebDriverBackedSelenium(driver, "file:///D:/folder/abcd.html");

【讨论】:

可以以某种方式使用相对路径吗? @Pithikos 没有,但是在使用 windows 时,您可以使用环境变量,例如 %USERPROFILE%(主文件夹)和 %APPDATA%(应用程序文件夹) 如何在 macOS 上使用 Safari 执行此操作?我无法从本地文件系统打开 html 文件。如果我在浏览器中手动使用 file:///Users/pathToMyFile/index.html ,它就可以工作。但是,如果驱动程序通过get方法打开它,它就不起作用。 它适用于我的 aws 实例 :)【参考方案6】:

当您调用 driver.get(URL) 方法时,WebDriver 会使用作为基本 javascript 的 HTTP 请求,因此,将网站作为路径引用,该任务将是不可能的。

但如果您: 1st- 在你的 marine 上安装 Apache WebServer(比方说)。 2nd-上传或公开到WebServer,那个Web应用程序(dispatcher.html) 3rd- 尝试在 [http://localhost:8080/dispatcher.html] 上记录和执行您的测试用例(8080 是默认端口,但您可以将其配置为其他端口)。

【讨论】:

以上是关于如何在本地网页(在我的 PC 上)上使用 Selenium WebDriver 而不是位于在线某处的网页?的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的 phonegap 应用程序中从网页导航到本地页面?

如何在我的网页中垂直排列水平排列的部分,以使我的页面在设备上响应

如何在我的本地 linux 服务器上运行 google-cloud-datalab?

如何使用 Django 在 HTML 按钮上执行 file.py?

Plesk 与本地 PC 上的 MariaDB 慢查询

Pyinstaller 一切都在本地机器上运行,但在另一台机器上失败