mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
Add support for returning array-like types from the Execute(Async)Script wd command
This commit is contained in:
parent
b3c0ed295f
commit
58f80f4ff3
22 changed files with 88 additions and 187 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -4027,6 +4027,7 @@ dependencies = [
|
||||||
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"utf-8 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"utf-8 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"webdriver 0.40.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"webrender_api 0.60.0 (git+https://github.com/servo/webrender)",
|
"webrender_api 0.60.0 (git+https://github.com/servo/webrender)",
|
||||||
"webvr_traits 0.0.1",
|
"webvr_traits 0.0.1",
|
||||||
"webxr-api 0.0.1 (git+https://github.com/servo/webxr)",
|
"webxr-api 0.0.1 (git+https://github.com/servo/webxr)",
|
||||||
|
@ -4119,6 +4120,7 @@ dependencies = [
|
||||||
"style_traits 0.0.1",
|
"style_traits 0.0.1",
|
||||||
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"webdriver 0.40.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"webrender_api 0.60.0 (git+https://github.com/servo/webrender)",
|
"webrender_api 0.60.0 (git+https://github.com/servo/webrender)",
|
||||||
"webvr_traits 0.0.1",
|
"webvr_traits 0.0.1",
|
||||||
"webxr-api 0.0.1 (git+https://github.com/servo/webxr)",
|
"webxr-api 0.0.1 (git+https://github.com/servo/webxr)",
|
||||||
|
|
|
@ -111,6 +111,7 @@ url = "1.6"
|
||||||
utf-8 = "0.7"
|
utf-8 = "0.7"
|
||||||
uuid = {version = "0.7", features = ["v4"]}
|
uuid = {version = "0.7", features = ["v4"]}
|
||||||
xml5ever = {version = "0.14"}
|
xml5ever = {version = "0.14"}
|
||||||
|
webdriver = "0.40"
|
||||||
webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]}
|
webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]}
|
||||||
webvr_traits = {path = "../webvr_traits"}
|
webvr_traits = {path = "../webvr_traits"}
|
||||||
webxr-api = {git = "https://github.com/servo/webxr", features = ["ipc"]}
|
webxr-api = {git = "https://github.com/servo/webxr", features = ["ipc"]}
|
||||||
|
|
|
@ -964,7 +964,7 @@ impl WindowMethods for Window {
|
||||||
|
|
||||||
#[allow(unsafe_code)]
|
#[allow(unsafe_code)]
|
||||||
fn WebdriverCallback(&self, cx: JSContext, val: HandleValue) {
|
fn WebdriverCallback(&self, cx: JSContext, val: HandleValue) {
|
||||||
let rv = unsafe { jsval_to_webdriver(*cx, val) };
|
let rv = unsafe { jsval_to_webdriver(*cx, &self.globalscope, val) };
|
||||||
let opt_chan = self.webdriver_script_chan.borrow_mut().take();
|
let opt_chan = self.webdriver_script_chan.borrow_mut().take();
|
||||||
if let Some(chan) = opt_chan {
|
if let Some(chan) = opt_chan {
|
||||||
chan.send(rv).unwrap();
|
chan.send(rv).unwrap();
|
||||||
|
|
|
@ -12,7 +12,10 @@ use crate::dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
|
||||||
use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
|
use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
|
||||||
use crate::dom::bindings::codegen::Bindings::XMLSerializerBinding::XMLSerializerMethods;
|
use crate::dom::bindings::codegen::Bindings::XMLSerializerBinding::XMLSerializerMethods;
|
||||||
use crate::dom::bindings::conversions::{
|
use crate::dom::bindings::conversions::{
|
||||||
get_property_jsval, ConversionResult, FromJSValConvertible, StringificationBehavior,
|
get_property, get_property_jsval, is_array_like, root_from_object,
|
||||||
|
};
|
||||||
|
use crate::dom::bindings::conversions::{
|
||||||
|
ConversionBehavior, ConversionResult, FromJSValConvertible, StringificationBehavior,
|
||||||
};
|
};
|
||||||
use crate::dom::bindings::error::throw_dom_exception;
|
use crate::dom::bindings::error::throw_dom_exception;
|
||||||
use crate::dom::bindings::inheritance::Castable;
|
use crate::dom::bindings::inheritance::Castable;
|
||||||
|
@ -29,12 +32,13 @@ use crate::dom::node::{window_from_node, Node, ShadowIncluding};
|
||||||
use crate::dom::nodelist::NodeList;
|
use crate::dom::nodelist::NodeList;
|
||||||
use crate::dom::window::Window;
|
use crate::dom::window::Window;
|
||||||
use crate::dom::xmlserializer::XMLSerializer;
|
use crate::dom::xmlserializer::XMLSerializer;
|
||||||
|
use crate::script_runtime::JSContext as SafeJSContext;
|
||||||
use crate::script_thread::Documents;
|
use crate::script_thread::Documents;
|
||||||
use cookie::Cookie;
|
use cookie::Cookie;
|
||||||
use euclid::default::{Point2D, Rect, Size2D};
|
use euclid::default::{Point2D, Rect, Size2D};
|
||||||
use hyper_serde::Serde;
|
use hyper_serde::Serde;
|
||||||
use ipc_channel::ipc::{self, IpcSender};
|
use ipc_channel::ipc::{self, IpcSender};
|
||||||
use js::jsapi::JSContext;
|
use js::jsapi::{JSAutoRealm, JSContext};
|
||||||
use js::jsval::UndefinedValue;
|
use js::jsval::UndefinedValue;
|
||||||
use js::rust::HandleValue;
|
use js::rust::HandleValue;
|
||||||
use msg::constellation_msg::BrowsingContextId;
|
use msg::constellation_msg::BrowsingContextId;
|
||||||
|
@ -47,6 +51,7 @@ use script_traits::webdriver_msg::{
|
||||||
WebDriverFrameId, WebDriverJSError, WebDriverJSResult, WebDriverJSValue,
|
WebDriverFrameId, WebDriverJSError, WebDriverJSResult, WebDriverJSValue,
|
||||||
};
|
};
|
||||||
use servo_url::ServoUrl;
|
use servo_url::ServoUrl;
|
||||||
|
use webdriver::common::WebElement;
|
||||||
|
|
||||||
fn find_node_by_unique_id(
|
fn find_node_by_unique_id(
|
||||||
documents: &Documents,
|
documents: &Documents,
|
||||||
|
@ -106,9 +111,15 @@ fn first_matching_link(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(unsafe_code)]
|
#[allow(unsafe_code)]
|
||||||
pub unsafe fn jsval_to_webdriver(cx: *mut JSContext, val: HandleValue) -> WebDriverJSResult {
|
pub unsafe fn jsval_to_webdriver(
|
||||||
|
cx: *mut JSContext,
|
||||||
|
global_scope: &GlobalScope,
|
||||||
|
val: HandleValue,
|
||||||
|
) -> WebDriverJSResult {
|
||||||
if val.get().is_undefined() {
|
if val.get().is_undefined() {
|
||||||
Ok(WebDriverJSValue::Undefined)
|
Ok(WebDriverJSValue::Undefined)
|
||||||
|
} else if val.get().is_null() {
|
||||||
|
Ok(WebDriverJSValue::Null)
|
||||||
} else if val.get().is_boolean() {
|
} else if val.get().is_boolean() {
|
||||||
Ok(WebDriverJSValue::Boolean(val.get().to_boolean()))
|
Ok(WebDriverJSValue::Boolean(val.get().to_boolean()))
|
||||||
} else if val.get().is_double() || val.get().is_int32() {
|
} else if val.get().is_double() || val.get().is_int32() {
|
||||||
|
@ -128,8 +139,52 @@ pub unsafe fn jsval_to_webdriver(cx: *mut JSContext, val: HandleValue) -> WebDri
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
};
|
};
|
||||||
Ok(WebDriverJSValue::String(String::from(string)))
|
Ok(WebDriverJSValue::String(String::from(string)))
|
||||||
} else if val.get().is_null() {
|
} else if val.get().is_object() {
|
||||||
Ok(WebDriverJSValue::Null)
|
rooted!(in(cx) let object = match FromJSValConvertible::from_jsval(cx, val, ()).unwrap() {
|
||||||
|
ConversionResult::Success(object) => object,
|
||||||
|
_ => unreachable!(),
|
||||||
|
});
|
||||||
|
let _ac = JSAutoRealm::new(cx, *object);
|
||||||
|
|
||||||
|
if let Ok(element) = root_from_object::<HTMLElement>(*object, cx) {
|
||||||
|
return Ok(WebDriverJSValue::Element(WebElement(
|
||||||
|
element.upcast::<Node>().unique_id(),
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if !is_array_like(cx, val) {
|
||||||
|
return Err(WebDriverJSError::UnknownType);
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut result: Vec<WebDriverJSValue> = Vec::new();
|
||||||
|
|
||||||
|
let length =
|
||||||
|
match get_property::<u32>(cx, object.handle(), "length", ConversionBehavior::Default) {
|
||||||
|
Ok(length) => match length {
|
||||||
|
Some(length) => length,
|
||||||
|
_ => return Err(WebDriverJSError::UnknownType),
|
||||||
|
},
|
||||||
|
Err(error) => {
|
||||||
|
throw_dom_exception(SafeJSContext::from_ptr(cx), global_scope, error);
|
||||||
|
return Err(WebDriverJSError::JSError);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
for i in 0..length {
|
||||||
|
rooted!(in(cx) let mut item = UndefinedValue());
|
||||||
|
match get_property_jsval(cx, object.handle(), &i.to_string(), item.handle_mut()) {
|
||||||
|
Ok(_) => match jsval_to_webdriver(cx, global_scope, item.handle()) {
|
||||||
|
Ok(converted_item) => result.push(converted_item),
|
||||||
|
err @ Err(_) => return err,
|
||||||
|
},
|
||||||
|
Err(error) => {
|
||||||
|
throw_dom_exception(SafeJSContext::from_ptr(cx), global_scope, error);
|
||||||
|
return Err(WebDriverJSError::JSError);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(WebDriverJSValue::ArrayLike(result))
|
||||||
} else {
|
} else {
|
||||||
Err(WebDriverJSError::UnknownType)
|
Err(WebDriverJSError::UnknownType)
|
||||||
}
|
}
|
||||||
|
@ -149,7 +204,7 @@ pub fn handle_execute_script(
|
||||||
window
|
window
|
||||||
.upcast::<GlobalScope>()
|
.upcast::<GlobalScope>()
|
||||||
.evaluate_js_on_global_with_result(&eval, rval.handle_mut());
|
.evaluate_js_on_global_with_result(&eval, rval.handle_mut());
|
||||||
jsval_to_webdriver(*cx, rval.handle())
|
jsval_to_webdriver(*cx, &window.upcast::<GlobalScope>(), rval.handle())
|
||||||
};
|
};
|
||||||
|
|
||||||
reply.send(result).unwrap();
|
reply.send(result).unwrap();
|
||||||
|
@ -734,7 +789,9 @@ pub fn handle_get_property(
|
||||||
property.handle_mut(),
|
property.handle_mut(),
|
||||||
)
|
)
|
||||||
} {
|
} {
|
||||||
Ok(_) => match unsafe { jsval_to_webdriver(*cx, property.handle()) } {
|
Ok(_) => match unsafe {
|
||||||
|
jsval_to_webdriver(*cx, &node.reflector().global(), property.handle())
|
||||||
|
} {
|
||||||
Ok(property) => Ok(property),
|
Ok(property) => Ok(property),
|
||||||
Err(_) => Ok(WebDriverJSValue::Undefined),
|
Err(_) => Ok(WebDriverJSValue::Undefined),
|
||||||
},
|
},
|
||||||
|
|
|
@ -38,6 +38,7 @@ servo_url = {path = "../url"}
|
||||||
style_traits = {path = "../style_traits", features = ["servo"]}
|
style_traits = {path = "../style_traits", features = ["servo"]}
|
||||||
time = "0.1.12"
|
time = "0.1.12"
|
||||||
url = "1.2"
|
url = "1.2"
|
||||||
|
webdriver = "0.40"
|
||||||
webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]}
|
webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]}
|
||||||
webvr_traits = {path = "../webvr_traits"}
|
webvr_traits = {path = "../webvr_traits"}
|
||||||
webxr-api = {git = "https://github.com/servo/webxr", features = ["ipc"]}
|
webxr-api = {git = "https://github.com/servo/webxr", features = ["ipc"]}
|
||||||
|
|
|
@ -10,6 +10,7 @@ use hyper_serde::Serde;
|
||||||
use ipc_channel::ipc::IpcSender;
|
use ipc_channel::ipc::IpcSender;
|
||||||
use msg::constellation_msg::BrowsingContextId;
|
use msg::constellation_msg::BrowsingContextId;
|
||||||
use servo_url::ServoUrl;
|
use servo_url::ServoUrl;
|
||||||
|
use webdriver::common::WebElement;
|
||||||
|
|
||||||
#[derive(Debug, Deserialize, Serialize)]
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
pub enum WebDriverScriptCommand {
|
pub enum WebDriverScriptCommand {
|
||||||
|
@ -66,13 +67,16 @@ pub enum WebDriverJSValue {
|
||||||
Null,
|
Null,
|
||||||
Boolean(bool),
|
Boolean(bool),
|
||||||
Number(f64),
|
Number(f64),
|
||||||
String(String), // TODO: Object and WebElement
|
String(String),
|
||||||
|
Element(WebElement),
|
||||||
|
ArrayLike(Vec<WebDriverJSValue>),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize, Serialize)]
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
pub enum WebDriverJSError {
|
pub enum WebDriverJSError {
|
||||||
Timeout,
|
Timeout,
|
||||||
UnknownType,
|
UnknownType,
|
||||||
|
JSError,
|
||||||
/// Occurs when handler received an event message for a layout channel that is not
|
/// Occurs when handler received an event message for a layout channel that is not
|
||||||
/// associated with the current script thread
|
/// associated with the current script thread
|
||||||
BrowsingContextNotFound,
|
BrowsingContextNotFound,
|
||||||
|
|
|
@ -224,6 +224,12 @@ impl Serialize for SendableWebDriverJSValue {
|
||||||
WebDriverJSValue::Boolean(x) => serializer.serialize_bool(x),
|
WebDriverJSValue::Boolean(x) => serializer.serialize_bool(x),
|
||||||
WebDriverJSValue::Number(x) => serializer.serialize_f64(x),
|
WebDriverJSValue::Number(x) => serializer.serialize_f64(x),
|
||||||
WebDriverJSValue::String(ref x) => serializer.serialize_str(&x),
|
WebDriverJSValue::String(ref x) => serializer.serialize_str(&x),
|
||||||
|
WebDriverJSValue::Element(ref x) => x.serialize(serializer),
|
||||||
|
WebDriverJSValue::ArrayLike(ref x) => x
|
||||||
|
.iter()
|
||||||
|
.map(|element| SendableWebDriverJSValue(element.clone()))
|
||||||
|
.collect::<Vec<SendableWebDriverJSValue>>()
|
||||||
|
.serialize(serializer),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1397,6 +1403,10 @@ impl Handler {
|
||||||
ErrorStatus::UnsupportedOperation,
|
ErrorStatus::UnsupportedOperation,
|
||||||
"Unsupported return type",
|
"Unsupported return type",
|
||||||
)),
|
)),
|
||||||
|
Err(WebDriverJSError::JSError) => Err(WebDriverError::new(
|
||||||
|
ErrorStatus::JavascriptError,
|
||||||
|
"JS evaluation raised an exception",
|
||||||
|
)),
|
||||||
Err(WebDriverJSError::BrowsingContextNotFound) => Err(WebDriverError::new(
|
Err(WebDriverJSError::BrowsingContextNotFound) => Err(WebDriverError::new(
|
||||||
ErrorStatus::JavascriptError,
|
ErrorStatus::JavascriptError,
|
||||||
"Pipeline id not found in browsing context",
|
"Pipeline id not found in browsing context",
|
||||||
|
|
|
@ -5,12 +5,6 @@
|
||||||
[test_form_control_send_text[textarea\]]
|
[test_form_control_send_text[textarea\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_not_blurred[input\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_file_upload]
|
[test_file_upload]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_not_blurred[textarea\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,2 @@
|
||||||
[form_controls.py]
|
[form_controls.py]
|
||||||
[test_textarea]
|
disabled: Triggers setup errors in other tests
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_input_append]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_textarea_append]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_input]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,25 +1,10 @@
|
||||||
[collections.py]
|
[collections.py]
|
||||||
[test_html_form_controls_collection]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_html_options_collection]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_file_list]
|
[test_file_list]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_arguments]
|
[test_arguments]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_html_collection]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_array]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_node_list]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_html_all_collection]
|
[test_html_all_collection]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,13 @@
|
||||||
[cyclic.py]
|
[cyclic.py]
|
||||||
[test_element_in_collection]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_object_in_array]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_object]
|
[test_object]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_array]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_array_in_object]
|
[test_array_in_object]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_element_in_object]
|
[test_element_in_object]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[test_element_in_collection]
|
||||||
|
expected:
|
||||||
|
if os == "mac": FAIL
|
||||||
|
|
|
@ -23,6 +23,3 @@
|
||||||
[test_abort_by_user_prompt_twice[alert\]]
|
[test_abort_by_user_prompt_twice[alert\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_override_listeners]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[properties.py]
|
|
||||||
[test_idl_attribute_element]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,25 +1,13 @@
|
||||||
[find.py]
|
[find.py]
|
||||||
[test_xhtml_namespace[css selector-#linkText\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_htmldocument[xpath-/html\]]
|
[test_htmldocument[xpath-/html\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_xhtml_namespace[xpath-//*[name()='a'\]\]]
|
[test_xhtml_namespace[xpath-//*[name()='a'\]\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_xhtml_namespace[tag name-a\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_xhtml_namespace[link text-full link text\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_no_element[css selector-#wontExist\]]
|
[test_no_element[css selector-#wontExist\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_xhtml_namespace[partial link text-link text\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_element[xpath-//a\]]
|
[test_find_element[xpath-//a\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,28 +1,16 @@
|
||||||
[find.py]
|
[find.py]
|
||||||
[test_xhtml_namespace[css selector-#linkText\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_xhtml_namespace[xpath-//*[name()='a'\]\]]
|
[test_xhtml_namespace[xpath-//*[name()='a'\]\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_parent_htmldocument]
|
[test_parent_htmldocument]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_xhtml_namespace[tag name-a\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_xhtml_namespace[link text-full link text\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_parent_of_document_node_errors]
|
[test_parent_of_document_node_errors]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_no_element[css selector-#wontExist\]]
|
[test_no_element[css selector-#wontExist\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_xhtml_namespace[partial link text-link text\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_element[xpath-//a\]]
|
[test_find_element[xpath-//a\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,64 +1,25 @@
|
||||||
[find.py]
|
[find.py]
|
||||||
[test_xhtml_namespace[css selector-#linkText\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_elements_link_text[<a href=#>LINK TEXT</a>-LINK TEXT\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_elements_link_text[<a href=#>link text</a>-link text\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_xhtml_namespace[xpath-//*[name()='a'\]\]]
|
[test_xhtml_namespace[xpath-//*[name()='a'\]\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_find_elements_link_text[<a href=# style='text-transform: uppercase'>link text</a>-LINK TEXT\]]
|
[test_find_elements_link_text[<a href=# style='text-transform: uppercase'>link text</a>-LINK TEXT\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_find_elements_partial_link_text[<a href=#> partial link text </a>-link\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_xhtml_namespace[partial link text-link text\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_elements_partial_link_text[<a href=#>partial link<br>text</a>-k\nt\]]
|
[test_find_elements_partial_link_text[<a href=#>partial link<br>text</a>-k\nt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_find_elements_link_text[<a href=#> link text </a>-link text\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_htmldocument[xpath-/html\]]
|
[test_htmldocument[xpath-/html\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_xhtml_namespace[link text-full link text\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_elements_partial_link_text[<a href=#>partial link text</a>-k t\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_elements_partial_link_text[<a href=#>partial link&text</a>-k&t\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_elements[xpath-//a\]]
|
[test_find_elements[xpath-//a\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_find_elements_partial_link_text[<a href=# style='text-transform: uppercase'>partial link text</a>-LINK\]]
|
[test_find_elements_partial_link_text[<a href=# style='text-transform: uppercase'>partial link text</a>-LINK\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_find_elements_partial_link_text[<a href=#>PARTIAL LINK TEXT</a>-LINK\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_elements_link_text[<a href=#>link<br>text</a>-link\ntext\]]
|
[test_find_elements_link_text[<a href=#>link<br>text</a>-link\ntext\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_find_elements_link_text[<a href=#>link&text</a>-link&text\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_elements_partial_link_text[<a href=#>partial link text</a>-link\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_no_browsing_context]
|
[test_no_browsing_context]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
|
|
||||||
[test_xhtml_namespace[tag name-a\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,67 +1,28 @@
|
||||||
[find.py]
|
[find.py]
|
||||||
[test_find_elements_link_text[<a href=#>LINK TEXT</a>-LINK TEXT\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_elements_link_text[<a href=#>link text</a>-link text\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_xhtml_namespace[xpath-//*[name()='a'\]\]]
|
[test_xhtml_namespace[xpath-//*[name()='a'\]\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_xhtml_namespace[css selector-#linkText\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_elements_link_text[<a href=# style='text-transform: uppercase'>link text</a>-LINK TEXT\]]
|
[test_find_elements_link_text[<a href=# style='text-transform: uppercase'>link text</a>-LINK TEXT\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_find_elements_partial_link_text[<a href=#> partial link text </a>-link\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_xhtml_namespace[partial link text-link text\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_elements_partial_link_text[<a href=#>partial link<br>text</a>-k\nt\]]
|
[test_find_elements_partial_link_text[<a href=#>partial link<br>text</a>-k\nt\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_find_elements_link_text[<a href=#> link text </a>-link text\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_parent_htmldocument]
|
[test_parent_htmldocument]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_xhtml_namespace[link text-full link text\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_elements_partial_link_text[<a href=#>partial link text</a>-k t\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_parent_of_document_node_errors]
|
[test_parent_of_document_node_errors]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_find_elements_partial_link_text[<a href=#>partial link&text</a>-k&t\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_elements[xpath-//a\]]
|
[test_find_elements[xpath-//a\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_find_elements_partial_link_text[<a href=# style='text-transform: uppercase'>partial link text</a>-LINK\]]
|
[test_find_elements_partial_link_text[<a href=# style='text-transform: uppercase'>partial link text</a>-LINK\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_find_elements_partial_link_text[<a href=#>PARTIAL LINK TEXT</a>-LINK\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_elements_link_text[<a href=#>link<br>text</a>-link\ntext\]]
|
[test_find_elements_link_text[<a href=#>link<br>text</a>-link\ntext\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_find_elements_link_text[<a href=#>link&text</a>-link&text\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_find_elements_partial_link_text[<a href=#>partial link text</a>-link\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_no_browsing_context]
|
[test_no_browsing_context]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
|
|
||||||
[test_xhtml_namespace[tag name-a\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,22 +1,7 @@
|
||||||
[get.py]
|
[get.py]
|
||||||
[test_sucess_input_non_interactable]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_success_document]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_sucess_input]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_success_explicit_focus]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_no_browsing_context]
|
[test_no_browsing_context]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
|
|
||||||
[test_missing_document_element]
|
[test_missing_document_element]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_success_iframe_content]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,3 @@
|
||||||
[test_no_browsing_context]
|
[test_no_browsing_context]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
|
|
||||||
[test_get_current_url_nested_browsing_context]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,6 @@
|
||||||
[test_primitives_set_by_execute_script[42-42\]]
|
[test_primitives_set_by_execute_script[42-42\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test_primitives[js_primitive2-py_primitive2\]]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_primitives_set_by_execute_script[js_primitive2-py_primitive2\]]
|
[test_primitives_set_by_execute_script[js_primitive2-py_primitive2\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
[get.py]
|
[get.py]
|
||||||
[test_title_from_frame]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_no_browsing_context]
|
[test_no_browsing_context]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,3 @@
|
||||||
[test_no_browsing_context]
|
[test_no_browsing_context]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
|
|
||||||
[test_format_and_dimensions]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue