Fixed alert/confirm/prompt crashing the page
This commit is contained in:
parent
6c247a0669
commit
30d90f9f35
|
@ -437,4 +437,29 @@ describe Capybara::Driver::Webkit do
|
||||||
subject.find("//p").first.text.should == "/next"
|
subject.find("//p").first.text.should == "/next"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "popup app" do
|
||||||
|
before(:all) do
|
||||||
|
@app = lambda do |env|
|
||||||
|
body = <<-HTML
|
||||||
|
<html><body>
|
||||||
|
<script type="text/javascript">
|
||||||
|
alert("alert");
|
||||||
|
confirm("confirm");
|
||||||
|
prompt("prompt");
|
||||||
|
</script>
|
||||||
|
<p>success</p>
|
||||||
|
</body></html>
|
||||||
|
HTML
|
||||||
|
sleep(0.5)
|
||||||
|
[200,
|
||||||
|
{ 'Content-Type' => 'text/html', 'Content-Length' => body.length.to_s },
|
||||||
|
[body]]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't crash from alerts" do
|
||||||
|
subject.find("//p").first.text.should == "success"
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -43,6 +43,25 @@ void WebPage::javaScriptConsoleMessage(const QString &message, int lineNumber, c
|
||||||
std::cout << qPrintable(message) << std::endl;
|
std::cout << qPrintable(message) << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WebPage::javaScriptAlert(QWebFrame *frame, const QString &message) {
|
||||||
|
Q_UNUSED(frame);
|
||||||
|
std::cout << "ALERT: " << qPrintable(message) << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool WebPage::javaScriptConfirm(QWebFrame *frame, const QString &message) {
|
||||||
|
Q_UNUSED(frame);
|
||||||
|
Q_UNUSED(message);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool WebPage::javaScriptPrompt(QWebFrame *frame, const QString &message, const QString &defaultValue, QString *result) {
|
||||||
|
Q_UNUSED(frame)
|
||||||
|
Q_UNUSED(message)
|
||||||
|
Q_UNUSED(defaultValue)
|
||||||
|
Q_UNUSED(result)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void WebPage::loadStarted() {
|
void WebPage::loadStarted() {
|
||||||
m_loading = true;
|
m_loading = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,9 @@ class WebPage : public QWebPage {
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void javaScriptConsoleMessage(const QString &message, int lineNumber, const QString &sourceID);
|
virtual void javaScriptConsoleMessage(const QString &message, int lineNumber, const QString &sourceID);
|
||||||
|
virtual void javaScriptAlert(QWebFrame *frame, const QString &message);
|
||||||
|
virtual bool javaScriptConfirm(QWebFrame *frame, const QString &message);
|
||||||
|
virtual bool javaScriptPrompt(QWebFrame *frame, const QString &message, const QString &defaultValue, QString *result);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString m_capybaraJavascript;
|
QString m_capybaraJavascript;
|
||||||
|
|
Loading…
Reference in New Issue