diff --git a/gemfiles/master.gemfile b/gemfiles/master.gemfile
index 220b42e..52e7a96 100644
--- a/gemfiles/master.gemfile
+++ b/gemfiles/master.gemfile
@@ -2,8 +2,7 @@
source "https://rubygems.org"
-gem "capybara", github: "jnicklas/capybara"
+gem "capybara", github: "teamcapybara/capybara"
gem "puma"
-gem 'byebug'
gemspec path: "../"
diff --git a/lib/capybara/webkit/browser.rb b/lib/capybara/webkit/browser.rb
index 6a8c426..65fcb5c 100644
--- a/lib/capybara/webkit/browser.rb
+++ b/lib/capybara/webkit/browser.rb
@@ -28,6 +28,10 @@ module Capybara::Webkit
command("Title")
end
+ def frame_title
+ command("FrameTitle")
+ end
+
def find_xpath(query)
command("FindXpath", query).split(",")
end
@@ -81,6 +85,10 @@ module Capybara::Webkit
command("CurrentUrl")
end
+ def frame_url
+ command("FrameUrl")
+ end
+
def frame_focus(selector=nil)
if selector.respond_to?(:base)
selector.base.invoke("focus_frame")
diff --git a/lib/capybara/webkit/driver.rb b/lib/capybara/webkit/driver.rb
index 951cc4a..ac00333 100644
--- a/lib/capybara/webkit/driver.rb
+++ b/lib/capybara/webkit/driver.rb
@@ -43,7 +43,15 @@ module Capybara::Webkit
end
def current_url
- @browser.current_url
+ if Capybara::VERSION.to_f < 3.0
+ @browser.frame_url
+ else
+ @browser.current_url
+ end
+ end
+
+ def frame_url
+ @browser.frame_url
end
def visit(path)
@@ -73,7 +81,15 @@ module Capybara::Webkit
end
def title
- @browser.title
+ if Capybara::VERSION.to_f < 3.0
+ frame_title
+ else
+ @browser.title
+ end
+ end
+
+ def frame_title
+ @browser.frame_title
end
def execute_script(script, *args)
diff --git a/spec/driver_spec.rb b/spec/driver_spec.rb
index c5ef82a..e240e1f 100644
--- a/spec/driver_spec.rb
+++ b/spec/driver_spec.rb
@@ -35,6 +35,7 @@ describe Capybara::Webkit::Driver do
<<-HTML
+ Main
@@ -172,7 +173,11 @@ describe Capybara::Webkit::Driver do
it "returns the current URL" do
driver.within_frame("f") do
- expect(driver.current_url).to eq driver_url(driver, "/iframe")
+ if Capybara::VERSION.to_f < 3.0
+ expect(driver.current_url).to eq driver_url(driver, "/iframe")
+ else
+ expect(driver.current_url).to eq driver_url(driver, "/")
+ end
end
end
@@ -210,9 +215,24 @@ describe Capybara::Webkit::Driver do
end
end
- it "returns the document title" do
+ if Capybara::VERSION.to_f < 3.0
+ it "returns the document title" do
+ driver.within_frame("f") do
+ expect(driver.title).to eq 'Title'
+ end
+ end
+ else
+ it "returns the top level browsing context text" do
+ driver.within_frame("f") do
+ expect(driver.title).to eq 'Main'
+ end
+ end
+ end
+
+ it "returns the title for the current frame" do
+ expect(driver.frame_title).to eq 'Main'
driver.within_frame("f") do
- expect(driver.title).to eq "Title"
+ expect(driver.frame_title).to eq 'Title'
end
end
end
diff --git a/src/CommandFactory.cpp b/src/CommandFactory.cpp
index 26ce2f4..387be90 100644
--- a/src/CommandFactory.cpp
+++ b/src/CommandFactory.cpp
@@ -53,6 +53,8 @@
#include "SetUnknownUrlMode.h"
#include "AllowUrl.h"
#include "BlockUrl.h"
+#include "FrameTitle.h"
+#include "FrameUrl.h"
CommandFactory::CommandFactory(WebPageManager *manager, QObject *parent) : QObject(parent) {
m_manager = manager;
diff --git a/src/CurrentUrl.cpp b/src/CurrentUrl.cpp
index 161a476..82c45eb 100644
--- a/src/CurrentUrl.cpp
+++ b/src/CurrentUrl.cpp
@@ -7,7 +7,7 @@ CurrentUrl::CurrentUrl(WebPageManager *manager, QStringList &arguments, QObject
void CurrentUrl::start() {
QStringList arguments;
- QVariant result = page()->currentFrame()->evaluateJavaScript("window.location.toString()");
+ QVariant result = page()->mainFrame()->evaluateJavaScript("window.location.toString()");
QString url = result.toString();
finish(true, url);
}
diff --git a/src/FrameTitle.cpp b/src/FrameTitle.cpp
new file mode 100644
index 0000000..be2dc33
--- /dev/null
+++ b/src/FrameTitle.cpp
@@ -0,0 +1,11 @@
+#include "FrameTitle.h"
+#include "SocketCommand.h"
+#include "WebPage.h"
+#include "WebPageManager.h"
+
+FrameTitle::FrameTitle(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
+}
+
+void FrameTitle::start() {
+ finish(true, page()->currentFrame()->title());
+}
diff --git a/src/FrameTitle.h b/src/FrameTitle.h
new file mode 100644
index 0000000..3b821e0
--- /dev/null
+++ b/src/FrameTitle.h
@@ -0,0 +1,10 @@
+#include "SocketCommand.h"
+
+class FrameTitle : public SocketCommand {
+ Q_OBJECT
+
+ public:
+ FrameTitle(WebPageManager *, QStringList &arguments, QObject *parent = 0);
+ virtual void start();
+};
+
diff --git a/src/FrameUrl.cpp b/src/FrameUrl.cpp
new file mode 100644
index 0000000..6bfeaab
--- /dev/null
+++ b/src/FrameUrl.cpp
@@ -0,0 +1,13 @@
+#include "FrameUrl.h"
+#include "SocketCommand.h"
+#include "WebPage.h"
+#include "WebPageManager.h"
+
+FrameUrl::FrameUrl(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
+}
+
+void FrameUrl::start() {
+ QVariant result = page()->currentFrame()->evaluateJavaScript("window.location.toString()");
+ QString url = result.toString();
+ finish(true, url);
+}
diff --git a/src/FrameUrl.h b/src/FrameUrl.h
new file mode 100644
index 0000000..e2b8e5e
--- /dev/null
+++ b/src/FrameUrl.h
@@ -0,0 +1,10 @@
+#include "SocketCommand.h"
+
+class FrameUrl : public SocketCommand {
+ Q_OBJECT
+
+ public:
+ FrameUrl(WebPageManager *, QStringList &arguments, QObject *parent = 0);
+ virtual void start();
+};
+
diff --git a/src/Title.cpp b/src/Title.cpp
index 2ffce04..29478f2 100644
--- a/src/Title.cpp
+++ b/src/Title.cpp
@@ -7,5 +7,5 @@ Title::Title(WebPageManager *manager, QStringList &arguments, QObject *parent) :
}
void Title::start() {
- finish(true, page()->currentFrame()->title());
+ finish(true, page()->mainFrame()->title());
}
diff --git a/src/find_command.h b/src/find_command.h
index 559e977..e590166 100644
--- a/src/find_command.h
+++ b/src/find_command.h
@@ -55,3 +55,5 @@ CHECK_COMMAND(FindModal)
CHECK_COMMAND(SetUnknownUrlMode)
CHECK_COMMAND(AllowUrl)
CHECK_COMMAND(BlockUrl)
+CHECK_COMMAND(FrameTitle)
+CHECK_COMMAND(FrameUrl)
diff --git a/src/webkit_server.pro b/src/webkit_server.pro
index 7bb7b0c..7a42a42 100644
--- a/src/webkit_server.pro
+++ b/src/webkit_server.pro
@@ -10,6 +10,8 @@ PRECOMPILED_DIR = $${BUILD_DIR}
OBJECTS_DIR = $${BUILD_DIR}
MOC_DIR = $${BUILD_DIR}
HEADERS = \
+ FrameUrl.h \
+ FrameTitle.h \
BlockUrl.h \
AllowUrl.h \
SetUnknownUrlMode.h \
@@ -95,6 +97,8 @@ HEADERS = \
UnknownUrlHandler.h
SOURCES = \
+ FrameUrl.cpp \
+ FrameTitle.cpp \
BlockUrl.cpp \
AllowUrl.cpp \
SetUnknownUrlMode.cpp \