找不到xPath SELENIUM JAVA

找不到xPath SELENIUM JAVA,java,selenium,xpath,Java,Selenium,Xpath,在设置打开此xpath以插入数据的循环时,出现了无法找到xpath的keep-throw错误。虽然我将等待生存的时间设置为60秒,但它仍然找不到。我一直在尝试使用标题或状态调用此方法,因此它仍然不起作用。恳请告知 HTML: <a href="javascript: void edit('edit_total_amt')" title="Override total tax amount" onmouseover="status='Override total tax amount'; r

在设置打开此xpath以插入数据的循环时,出现了无法找到xpath的keep-throw错误。虽然我将等待生存的时间设置为60秒,但它仍然找不到。我一直在尝试使用标题或状态调用此方法,因此它仍然不起作用。恳请告知

HTML:

<a href="javascript: void edit('edit_total_amt')" title="Override total tax amount" onmouseover="status='Override total tax amount'; return true">91.14</a>
-不存在

public boolean waitForExistence(By by, int timeoutSeconds){
        boolean exists = false;
        Long polling_interval = (long) 250;
        Long timeout = (long) timeoutSeconds * 1000; // in seconds
        Long elapsed = (long) 0;
        while (elapsed <= (timeout)) {
            if (exists(by)) {
                exists = true;
                break;
            }
            try {
                Thread.sleep(polling_interval);
            } catch (InterruptedException e) {
                JLog.warning(JLog.getStackTraceAsString(e));
                break;
            }
            elapsed += polling_interval;
        }
        if (elapsed >= timeout) {
            JLog.warning("waitForExistence waited for " + timeout/1000 + " seconds, but unable to find: " + by.toString());
        }   
        return exists;
    }
public boolean waitForExistence(By,int-timeoutSeconds){
布尔存在=假;
长轮询间隔=(长)250;
长超时=(长)超时秒*1000;//以秒为单位
长时间经过=(长)0;
while(经过=超时){
JLog.warning(“waitForExistence等待了“+timeout/1000+”秒,但找不到:“+by.toString()”);
}   
回报存在;
}

谢谢你

如果是公司内部的网页,我建议你给它一个“id”,让你的生活更轻松。如果没有,你可以这样做。我总是对人们编写自己的等待方法感到惊讶,因为在Selenium中可以使用隐式或显式等待时间

前者如下所示,使用此方法唯一需要注意的是,在查找元素时,它将始终等待这么长时间。但是,这是一种更安全的方法来编写脚本,查找元素,并且不会使代码膨胀:

driver.manage().timeouts().implicitlyWait(6, TimeUnit.SECONDS);

if (driver.findElements(By.cssSelector("//*[@title=\"Override total tax amount\"]")).size()!=0)
{
    driver.findElement(By.cssSelector("//*[@title=\"Override total tax amount\"]")).click();
}
else
{
     JLog.fail("Unable to find a writable item taxdialog!");
}
明确的方法如下,其中10是你的秒:

WebElement myDynamicElement = (new WebDriverWait(driver, 10))
 .until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("//*[@title=\"Override total tax amount\"]")));
请参阅下面的链接以了解更多信息。

它是否抛出任何错误?如果有人发布stacktrace/错误日志。是否可以提供站点的链接?xpathit抛出错误没有问题:[2015-07-23 01:06:34 PDT]警告:waitForExistence等待了60秒,但找不到:By.xpath:[contains(@href,'edit_total_amt')][2015-07-23 01:06:34 PDT]失败:找不到可写项目taxdialog!很抱歉,我无法提供链接,因为使用XPath查找元素的方法不可靠。您应该尽量使用CSS、ID和类来查找元素。请尝试使用此“a[title='Override total tax amount']”作为CSS路径。我们可以看到您的
waitForExistence()
方法吗?您显示的代码看起来很好。
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
 .until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("//*[@title=\"Override total tax amount\"]")));