【问题标题】:undefined method error in ruby seleniumruby selenium 中的未定义方法错误
【发布时间】:2016-02-24 17:45:07
【问题描述】:

我正在使用带有 selenium 的 ruby​​,我的代码如下:

$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). 的未定义方法错误

感谢任何帮助

【问题讨论】:

    标签: ruby selenium selenium-webdriver undefined


    【解决方案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
    

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

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

    【讨论】:

    • 错误是未定义的方法。这意味着 isElementPresent 未定义。我需要帮助
    • 我认为你不需要 Demo 来调用函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 2012-05-10
    相关资源
    最近更新 更多