红宝石硒中未定义的方法错误

时间:2016-02-24 17:45:08

标签: ruby selenium selenium-webdriver undefined

我正在使用带有硒的红宝石,我的代码如下:

$num=1
def isElementPresent(xpathExpression)
  allElements=@driver.find_elements(:xpath,xpathExpression)

  if (allElements.size==0)
    return true
    end
  else
    return false
  end

  while Demo.isElementPresent(str1+$num.to_s+str2)
    text=@driver.find_element(:xpath,str1+$num.to_s+str2).text
    $num+=1
    puts "text is:#{text}"
    @driver.find_element(:xpath,str1+$num.to_s+str2).click
    puts @driver.title
    @driver.navigate.back
  end
end

我收到while Demo.isElementPresent(str1+$num.to_s+str2).

的未定义方法错误

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

根据我的理解,你的病情应该是:

if (allElements.size>0)
return true

好像大小为0.这意味着没有元素存在。

此外,在这种情况下,您的函数定义应在调用之前结束。 请尝试以下代码:

$num=1
def isElementPresent(xpathExpression)
  allElements=@driver.find_elements(:xpath,xpathExpression)
  if (allElements.size>0)
    return true
  end
  else
    return false
  end
end
while isElementPresent(str1+$num.to_s+str2) do
    text=@driver.find_element(:xpath,str1+$num.to_s+str2).text
    $num+=1
    puts "text is:#{text}"
    @driver.find_element(:xpath,str1+$num.to_s+str2).click
    puts @driver.title
    @driver.navigate.back
end

这里我做了两处更改:第一,我解释的条件和第二,在循环之前结束函数的定义。

请告诉我它是否按预期运作。