Java 如果您不';我不知道某些元素是否存在?
我正在为公共互联网上的一个站点编写一个网络蜘蛛——也就是说,我无法控制目标站点。出于某种原因,我感兴趣的某些元素在重新加载之间更改了它们的名称、id和类似内容 由于Selenium,AFAIK,没有一个在元素存在或不存在时返回true/false的方法(而是抛出异常),处理这种情况的好策略是什么? 伪码 如果存在元素A,请单击A 否则,如果元素B存在,请单击B 否则,如果元素C存在,请单击C 目前,我必须用try/catch来包围每个if Selenium是否内置了用于此目的的工具,或者我应该编写自己的helper方法?Java 如果您不';我不知道某些元素是否存在?,java,selenium,Java,Selenium,我正在为公共互联网上的一个站点编写一个网络蜘蛛——也就是说,我无法控制目标站点。出于某种原因,我感兴趣的某些元素在重新加载之间更改了它们的名称、id和类似内容 由于Selenium,AFAIK,没有一个在元素存在或不存在时返回true/false的方法(而是抛出异常),处理这种情况的好策略是什么? 伪码 如果存在元素A,请单击A 否则,如果元素B存在,请单击B 否则,如果元素C存在,请单击C 目前,我必须用try/catch来包围每个if Selenium是否内置了用于此目的的工具,或者我应该编
public Boolean elementExists(WebDriver-driver,String-xpath){
public Boolean elementExists(WebDriver driver, String xpath) {
// this will not throw any exception, if no element is found, the list will be empty
List<WebElement> elements = driver.findElements(By.xpath(xpath));
if (elements.size() > 0) {
return true;
}
else {
return false;
}
}
//这不会引发任何异常,如果找不到元素,列表将为空
List elements=driver.findElements(By.xpath(xpath));
if(elements.size()>0){
返回true;
}
否则{
返回false;
}
}
任何定位器都可以用xpath解释
对于id“foo”
,xpath将是“/*[@id='foo']”
对于name“foo”
来说,xpath将是“//*[@name='foo']”
etc公共布尔元素存在(WebDriver驱动程序,字符串xpath){
//这不会引发任何异常,如果找不到元素,列表将为空
List elements=driver.findElements(By.xpath(xpath));
if(elements.size()>0){
返回true;
}
否则{
返回false;
}
}
任何定位器都可以用xpath解释
对于id“foo”
,xpath将是“/*[@id='foo']”
对于name“foo”
来说,xpath将是“//*[@name='foo']”
etc聪明!非常感谢。我有一种强烈的感觉,那就是肯定有一种比几十次尝试/抓住更好的方法。如果可能,请始终避免尝试/捕获块。聪明!非常感谢。我有一种强烈的感觉,那就是肯定有一种比几十次尝试/抓住更好的方法。如果可能,请始终避免使用try/catch块。