我有一个运行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