我正在使用带有硒的红宝石,我的代码如下:
$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).
感谢任何帮助
答案 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
这里我做了两处更改:第一,我解释的条件和第二,在循环之前结束函数的定义。
请告诉我它是否按预期运作。