selenium_webdriver/
safarioptions.rs

1///Utility struct to adjust the safari browser session
2///
3///  Please see https://developer.apple.com/documentation/webkit/about_webdriver_for_safari for more info
4pub struct SafariOptions{
5    pub (crate) base_string: String,
6}
7impl SafariOptions{
8    pub fn new()->Self{
9        SafariOptions{
10            base_string:String::new()
11        }
12    }
13    ///Preloads the Web Inspector and JavaScript debugger in the background.
14    pub fn enable_automatic_inspection(&mut self)->&mut Self{
15        if self.base_string.contains("Inspection"){panic!("The automaticInspection is already enabled!");}
16        let text = r#""safari:automaticInspection":true"#;
17        update_string(&mut self.base_string,text);
18        self
19    }
20    ///Preloads Web Inspector and starts a timeline recording in the background.
21    pub fn enable_automatic_profiling(&mut self)->&mut Self{
22        if self.base_string.contains("Profiling"){panic!("The automaticProfiling is already enabled!");}
23        let text = r#""safari:automaticProfiling":true"#;
24        update_string(&mut self.base_string,text);
25        self
26    }
27    ///Turns on the debugger for safaridriver
28    pub fn enable_diagnose(&mut self)->&mut Self{
29        if self.base_string.contains("diagnose"){panic!("The diagnostics are already enabled!");}
30        let text = r#""safari:diagnose":true"#;
31        update_string(&mut self.base_string,text);
32        self
33    }
34    ///Turn on the IOS simulator
35    pub fn enable_simulator(&mut self)->&mut Self{
36        if self.base_string.contains("Simulator"){panic!("The iOS simulation is already enabled!");}
37        let text = r#""safari:useSimulator":true"#;
38        update_string(&mut self.base_string,text);
39        self
40    }
41}
42// makes the dirty work with base string
43fn update_string(st: &mut String,text:&str){
44    let len = st.len();
45    if len>0{
46        st.push(',');
47        st.push_str(text);
48    }else{
49        st.push_str(text);
50    }
51}
52
53mod saf_gen{
54    use super::*;
55    #[test]
56    fn saf_base_str() {
57        let mut saf = SafariOptions::new();
58        saf.enable_simulator().enable_automatic_inspection().enable_automatic_profiling().enable_diagnose();
59        println!("{}",saf.base_string);
60        assert!(saf.base_string.contains("safari:diagnose")&&
61        saf.base_string.contains("safari:automaticInspection")&&
62        saf.base_string.contains("safari:automaticProfiling")&&
63        saf.base_string.contains("safari:useSimulator"));
64    }
65    #[test]
66    fn name() {
67        let mut saf = SafariOptions::new();
68        saf.enable_simulator();
69        println!("{}",saf.base_string);
70    }
71    #[test]
72    #[should_panic]
73    fn saf_double_add_sim() {
74        let mut saf = SafariOptions::new();
75        saf.enable_simulator().enable_simulator();
76    }
77}