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)