我有一个挑战,我花了一些时间来解决。
Selenium告诉我,它无法点击不可见的链接,这意味着我需要滚动我的画布?我使用的是ubuntu 10,firefox 3,selenium 0.1,ruby 1.9.2和selenium-webdriver 2.5.0
我的代码是
driver = Selenium::WebDriver.for :firefox;
driver.get login_url
wait = Selenium::WebDriver::Wait.new(:timeout => 2)
wait.until {
driver.find_element(:name => 'j_password')
}
driver.find_element(:name => 'j_username').send_keys(username)
driver.focus(:name => 'j_username')`
并且它表示focus()
未定义。我应该如何修改我的代码以将输入元素放在屏幕上?
答案 0 :(得分:7)
location_once_scrolled_into_view
使用ruby滚动。
根据您的问题,您的元素不可见,因此selenium Web驱动程序无法单击它。
对此的简单解决方案是:
例如代码:
element = dirver.find_element(:xpath, "xpath of nearby visible element")
element.location_once_scrolled_into_view
my_element = driver.find_element(:xpath, "xpath of your element")
my_element.click
答案 1 :(得分:2)
我在页面底部有一个元素,没有其他元素足够接近以便先选择。最后,通过页面上表格中最后一个字段的标签来解决它。
element.send_keys(:标签)
答案 2 :(得分:1)
当文档说“不可见”时,它不是指视口,而是指页面上元素的状态。如果CSS隐藏了某些内容,则无法单击。
答案 3 :(得分:0)
如果你想使用 selenium webdriver 滚动firefox窗口,其中一种方法是在java代码中使用javaScript,向下滚动的javeScript代码如下:
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("window.scrollTo(0,Math.max(document.documentElement.scrollHeight," +
"document.body.scrollHeight,document.documentElement.clientHeight));");
我不知道ruby,但上面的代码可以用作向下滚动整个页面的java脚本。你甚至可以通过简单地编码{来定义你想在视图窗口中滚动的区域。 {1}}