Implement current_url for driver.

This commit is contained in:
Tristan Dunn 2011-02-25 17:53:36 -05:00
parent 77ff0b4fc5
commit 92a17ae94e
8 changed files with 40 additions and 5 deletions

View File

@ -17,7 +17,7 @@ class Capybara::Driver::Webkit
end end
def current_url def current_url
raise NotImplementedError browser.url
end end
def visit(path) def visit(path)

View File

@ -19,6 +19,10 @@ class Capybara::Driver::Webkit
command("Reset") command("Reset")
end end
def url
command("Url")
end
def command(name, *args) def command(name, *args)
@socket.puts name @socket.puts name
args.each { |arg| @socket.puts arg } args.each { |arg| @socket.puts arg }

View File

@ -18,7 +18,7 @@ describe Capybara::Driver::Webkit do
end end
subject { Capybara::Driver::Webkit.new(hello_app) } subject { Capybara::Driver::Webkit.new(hello_app) }
before { subject.visit("/hello") } before { subject.visit("/hello/world?success=true") }
after { subject.reset! } after { subject.reset! }
it "finds content after loading a URL" do it "finds content after loading a URL" do
@ -38,5 +38,10 @@ describe Capybara::Driver::Webkit do
it "returns an attribute's value" do it "returns an attribute's value" do
subject.find("//p").first["id"].should == "greeting" subject.find("//p").first["id"].should == "greeting"
end end
it "returns the current URL" do
port = subject.instance_variable_get("@rack_server").port
subject.current_url.should == "http://127.0.0.1:#{port}/hello/world?success=true"
end
end end

View File

@ -4,6 +4,7 @@
#include "Command.h" #include "Command.h"
#include "Reset.h" #include "Reset.h"
#include "Attribute.h" #include "Attribute.h"
#include "Url.h"
#include <QTcpSocket> #include <QTcpSocket>
#include <iostream> #include <iostream>

12
src/Url.cpp Normal file
View File

@ -0,0 +1,12 @@
#include "Url.h"
#include "WebPage.h"
Url::Url(WebPage *page, QObject *parent) : Command(page, parent) {
}
void Url::start() {
QString response = page()->mainFrame()->url().toString();
emit finished(true, response);
}

12
src/Url.h Normal file
View File

@ -0,0 +1,12 @@
#include "Command.h"
class WebPage;
class Url : public Command {
Q_OBJECT
public:
Url(WebPage *page, QObject *parent = 0);
virtual void start();
};

View File

@ -6,4 +6,5 @@
CHECK_COMMAND(Visit) CHECK_COMMAND(Visit)
CHECK_COMMAND(Find) CHECK_COMMAND(Find)
CHECK_COMMAND(Reset) CHECK_COMMAND(Reset)
CHECK_COMMAND(Attribute) CHECK_COMMAND(Attribute)
CHECK_COMMAND(Url)

View File

@ -1,8 +1,8 @@
TEMPLATE = app TEMPLATE = app
TARGET = webkit_server TARGET = webkit_server
DESTDIR = . DESTDIR = .
HEADERS = WebPage.h Server.h Connection.h Command.h Visit.h Find.h Reset.h Attribute.h HEADERS = WebPage.h Server.h Connection.h Command.h Visit.h Find.h Reset.h Attribute.h Url.h
SOURCES = main.cpp WebPage.cpp Server.cpp Connection.cpp Command.cpp Visit.cpp Find.cpp Reset.cpp Attribute.cpp SOURCES = main.cpp WebPage.cpp Server.cpp Connection.cpp Command.cpp Visit.cpp Find.cpp Reset.cpp Attribute.cpp Url.cpp
QT += network webkit QT += network webkit
CONFIG += console staticlib CONFIG += console staticlib