Skip to content

Instantly share code, notes, and snippets.

@pschyska
Created November 1, 2010 17:53
Show Gist options
  • Save pschyska/658594 to your computer and use it in GitHub Desktop.
Save pschyska/658594 to your computer and use it in GitHub Desktop.
module WaitHelper
def wait
page.wait_until(5.seconds){ page.evaluate_script("!Netzke.isLoading()") }
page.wait_until(5.seconds){ page.evaluate_script("!Ext.Ajax.isLoading()") }
end
end
World(WaitHelper)
module TextClicker
def click_on_text text
page.wait_until(5.seconds){ click_on text }
end
def dbl_click_on_text text
page.wait_until(5.seconds){ dbl_click_on text }
end
def right_click_on_text text
page.wait_until(5.seconds){ right_click_on text }
end
private
def click_on text
wait
page.driver.find("//*[text()=\"#{text}\"]").try(:first).try(:click)
end
def dbl_click_on text
wait
click_on text
wait
node=page.driver.find("//*[text()=\"#{text}\"]").first
page.driver.browser.execute_script <<-JS, node.native
var el=arguments[0];
var clientX=Ext.get(el).getX();
var clientY=Ext.get(el).getY();
var ev = document.createEvent("MouseEvents");
ev.initMouseEvent("dblclick", true, true, window, 1, 0, 0, clientX, clientY, false, false, false, false, 0, null);
el.dispatchEvent(ev);
return true;
JS
end
def right_click_on text
wait
node=page.driver.find("//*[text()=\"#{text}\"]").first
page.driver.browser.execute_script <<-JS, node.native
var el=arguments[0];
var clientX=Ext.get(el).getX();
var clientY=Ext.get(el).getY();
var ev = document.createEvent("MouseEvents");
ev.initMouseEvent('contextmenu', true, true, window, 1, 0,0,clientX, clientY, false, false, false, false, 2, null);
el.dispatchEvent(ev);
return true;
JS
end
end
World(TextClicker)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment