selenium-rs icon indicating copy to clipboard operation
selenium-rs copied to clipboard

[Firefox] find_element() returns Json(Error("invalid type: null ...

Open NiklasRosenstein opened this issue 4 years ago • 3 comments

Hey, first time using selenium-rs, and also I'm a Rust newbie.

fn wait_for_element<'a, F, T>(f: F, interval: u32) -> Element<'a>
  where F: Fn() -> Result<Element<'a>, T>, T: std::fmt::Debug
{
  loop {
    match f() {
      Ok(el) => return el,
      Err(err) => println!("{:?}", err)
    }
    std::thread::sleep_ms(interval);
  }
}

impl ProfileConfig {

  /// Performs the login-flow with Selenium.
  #[allow(unused_must_use)]
  fn login_flow(&self, twofa: &str) {
    let mut driver = WebDriver::new(Browser::Firefox);
    driver.start_session();
    driver.navigate(&self.url.as_str());
    let el = wait_for_element(|| driver.find_element(Selector::ID, "vpnForm"), 1000);
    println!("Got element: {:?}", el)
  }

}

This leaves me with the following in the console:

Error(Status(500), "http://localhost:4444/wd/hub/session/0ac0314d-66e2-7041-b83c-5f3bcabd84d7/element")
Error(Status(500), "http://localhost:4444/wd/hub/session/0ac0314d-66e2-7041-b83c-5f3bcabd84d7/element")
Error(Status(500), "http://localhost:4444/wd/hub/session/0ac0314d-66e2-7041-b83c-5f3bcabd84d7/element")
Error(Json(Error("invalid type: null, expected a string", line: 3, column: 19)))
Error(Json(Error("invalid type: null, expected a string", line: 3, column: 19)))

The Status(500) errors is while the page has not fully loaded. Then the Json(Error(... appears once the page is loaded, so I'm assuming that the element now exists but something is going wrong in the communication with the Selenium Server?

There's nothing in the Selenium Server's stdout that seems to have a correlation with this error.

I tried using Browser::Chrome but unfortunately that leaves me with this error message instead (I believe this is due to the Chrome configuration deployed by my company disallowing loading of custom Java Script which appears to be injected by Selenium).

image

NiklasRosenstein avatar Aug 04 '20 22:08 NiklasRosenstein

Actually the Chrome version works when I use a chromedriver with the correct version 😄 It still shows the popup, but it works.

NiklasRosenstein avatar Aug 05 '20 10:08 NiklasRosenstein

Actually the Chrome version works when I use a chromedriver with the correct version 😄 It still shows the popup, but it works.

Could you link the right versions for the Java server and the chrome WebDriver ? I can't seem to find any working combination that does not throw "Error(Json(Error("invalid type: null, expected a string", line: 3, column: 19)))"

Sorry for being late :/

Y0GAAAA avatar Nov 14 '20 23:11 Y0GAAAA

Same issue as #35.

nixpulvis avatar Feb 21 '21 03:02 nixpulvis