lib/smart_driver.rb in smart_driver-1.1.1 vs lib/smart_driver.rb in smart_driver-1.1.2

- old
+ new

@@ -10,10 +10,42 @@ def initialize(url=nil, browser=:chrome) @__driver__ = Selenium::WebDriver.for(browser) go(url) if url end + def find(selector) + logging :info, "find #{selector}..." + @__driver__.find_element(css: selector) + rescue Selenium::WebDriver::Error::NoSuchElementError + logging :fail, "#{selector} cannot be found" + nil + end + + def finds(selector) + logging :info, "finds #{selector}..." + @__driver__.find_elements(css: selector) + rescue Selenium::WebDriver::Error::NoSuchElementError + logging :fail, "#{selector} cannot be found" + nil + end + + def find_text(text) + logging :info, "find text '#{text}'..." + @__driver__.find_element({xpath: "//*[text()[contains(.,\"#{text}\")]]"}) + rescue Selenium::WebDriver::Error::NoSuchElementError + logging :fail, "text '#{text}' cannot be found" + nil + end + + def finds_text(text) + logging :info, "finds text '#{text}'..." + @__driver__.find_elements({xpath: "//*[text()[contains(.,\"#{text}\")]]"}) + rescue Selenium::WebDriver::Error::NoSuchElementError + logging :fail, "text #{text} cannot be found" + nil + end + def go(url) logging :info, "visiting #{url}..." @__driver__.navigate.to(url) end @@ -47,9 +79,41 @@ end end class Selenium::WebDriver::Element include SmartDriver::CommonInterface + + def find(selector) + logging :info, "find #{selector} in element..." + self.find_element(css: selector) + rescue Selenium::WebDriver::Error::NoSuchElementError + logging :fail, "#{selector} cannot be found in element..." + nil + end + + def finds(selector) + logging :info, "finds #{selector} in element..." + self.find_elements(css: selector) + rescue Selenium::WebDriver::Error::NoSuchElementError + logging :fail, "#{selector} cannot be found in element..." + nil + end + + def find_text(text) + logging :info, "find text '#{text}'..." + self.find_element({xpath: "//*[text()[contains(.,\"#{text}\")]]"}) + rescue Selenium::WebDriver::Error::NoSuchElementError + logging :fail, "text '#{text}' cannot be found" + nil + end + + def finds_text(text) + logging :info, "finds text '#{text}'..." + self.find_elements({xpath: "//*[text()[contains(.,\"#{text}\")]]"}) + rescue Selenium::WebDriver::Error::NoSuchElementError + logging :fail, "text #{text} cannot be found" + nil + end def fill(text) $focus = self logging :info, "fill '#{text}'" send_key(text)