ruby 硒中的未定义方法错误

undefined method error in ruby selenium

我正在使用 ruby 和 selenium,我的代码如下:

$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).

的未定义方法错误

感谢任何帮助

据我了解,您的情况应该是:

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

这里我做了两处改动:首先,针对我解释过的条件,其次,在你的循环之前结束函数的定义。

如果它按预期工作,请告诉我。