如何用硒滚动

Vic*_*box 1 ruby selenium

我有一个挑战,我花了一些时间来解决.

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')`
Run Code Online (Sandbox Code Playgroud)

它说focus()没有定义.我应该如何修改我的代码以将输入元素放在屏幕上?

嗯,这是一个假设的例子,我真的需要滚动才能在屏幕上显示其他元素,但为了简单起见,我希望能够滚动屏幕上的任何元素,甚至

Shr*_*il. 8

location_once_scrolled_into_view用ruby滚动.
根据您的问题,您的元素不可见,因此selenium Web驱动程序无法单击它.

对此的简单解决方案是:

  1. 存储元素的xpath,该元素在元素的可见和附近.
  2. 滚动直到该可见元素,使您的元素可见.
  3. 确保您的元素现在可见,单击它

例如代码:

  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
Run Code Online (Sandbox Code Playgroud)