我有一个运行QT Webkit并显示GUI的嵌入式设备。我需要使用QTWebDriver访问设备QTWebKit浏览器。没有看到很多继续前进的例子。有人可以帮我吗?

最佳答案

您需要以与启动GUI的QApplication相同的过程来启动QtWebDriver。

为此,您需要将您的应用程序与QtWebDriver的库和标头链接。

例如,要将Webdriver suport添加到QT5.5 / Src / qtbase / examples / widgets / mainwindows / mainwindow示例,请首先修改mainwindow.pro:

+++ mainwindow.pro  2017-01-13 15:06:53.048081230 -0800
@@ -1,6 +1,17 @@
 TEMPLATE = app

-QT += widgets
+QT += widgets quick
+INCLUDEPATH += /home/user/qtwebdriver/out/dist/desktop/release/Test
+INCLUDEPATH += /home/user/qtwebdriver/out/dist/desktop/release/h
+LIBS += -L/home/user/qtwebdriver/out/dist/desktop/release/libs
+LIBS += -lchromium_base -lWebDriver_core -lWebDriver_extension_qt_base -lWebDriver_extension_qt_quick -lWebDriver_extension_qt_quick_web -lWebDriver_extension_qt_web
+DEFINES += QT_NO_SAMPLES="1"


其次,将webdriver标头包含在您的应用中,然后调用wd_setup(argc, argv)

+++ main.cpp    2017-01-13 15:45:33.663764896 -0800
@@ -32,6 +32,7 @@
 ****************************************************************************/

 #include "mainwindow.h"
+#include "Headers.h"

 #include <QApplication>
 #include <QPainterPath>
@@ -149,6 +150,7 @@ int main(int argc, char **argv)
 {
     QApplication app(argc, argv);
     QMap<QString, QSize> customSizeHints = parseCustomSizeHints(argc, argv);
+    wd_setup(argc, argv);
     MainWindow mainWin(customSizeHints);


(您可以将此附加代码标记为仅包含在测试版本中)

然后运行您的GUI。默认情况下,webdriver在端口9517上启动。

您可以使用Selenium的RemoteWebDriver连接到QtWebDriver

 DesiredCapabilities capability = new DesiredCapabilities();
 //Start WebDriver by reusing existing widget UI
 capability.setCapability("browserStartWindow", "*");
 driver = new RemoteWebDriver(new URL("http://remotehost:9517"), capability)
 selectWindow("http");
 etc...

 private String selectWindow(String protocol) {
    Set<String> windowHandles = driver.getWindowHandles();

    for (Iterator<String> iterator = windowHandles.iterator(); iterator.hasNext();) {
        String w = iterator.next();
        driver.switchTo().window(w);
        if (driver.getCurrentUrl().startsWith(protocol))
            return w;
    }
    return null;
}


browserStartWindow功能指示QtWebDriver选择找到的第一个窗口。

如果您的WebView嵌入到本机窗口小部件中,您将需要在所有窗口句柄上进行迭代并选择具有html内容的窗口,因此请使用selectWindow

选择正确的(子)窗口后,便会定期进行硒测试。

您可以在QtWebDriver Wiki中找到此信息:


https://github.com/cisco-open-source/qtwebdriver/wiki/Hybridity-And-View-Management
https://github.com/cisco-open-source/qtwebdriver/wiki/Use%20QtWebDriver%20to%20run%20your%20application

10-06 14:23