Java 无法使用我知道的所有元素定位器定位元素。HTML是使用CSS选择器生成的

Java 无法使用我知道的所有元素定位器定位元素。HTML是使用CSS选择器生成的,java,css,selenium,Java,Css,Selenium,这是我试图找到财务报告的HTML页面。我曾尝试使用XPath、CSS选择器,但没有成功: <div id='cssmenu'> <ul> <!-- ANALYSIS --> <div style="margin:10px">ANALYSIS</div> <li class='has-sub'><a href='ja

这是我试图找到财务报告的HTML页面。我曾尝试使用XPath、CSS选择器,但没有成功:

<div id='cssmenu'>
    <ul>                        
        <!-- ANALYSIS -->
        <div style="margin:10px">ANALYSIS</div>

        <li class='has-sub'><a href='javascript:void(0)'><div>Accruals</div></a>
            <ul>
                <li><a href='/financial/dailyAccrualMaintain.do?action=DAILY_MAINTAIN_OPEN&clear=true'><div>Daily</div></a></li>
                <li class='last'><a href='/financial/accrual.do?action=list1&clear=true'><div>Monthly</div></a></li>
            </ul>
        </li>
        <li><a href='/financial/financialReports.do?action=LIST_REPORTS&clear=true'><div>Financial Reports</div></a></li>
        <li><a href='/financial/validationReports.do?action=LIST_REPORTS&clear=true'><div>Validation Reports</div></a></li>
        <li><a href='/financial/financialCheck.do?action=OPEN&clear=true'><div>Financial Check</div></a></li>

    </ul>
</div>

看起来您想单击该链接,但您选择的是
li
。也许可以选择链接(这也有一个相当独特的属性集的优势):


^=
表示“.”

您可以使用以下XPath:

//a[contains(.,'Financial Reports')]
而且,如果您无法找到它,请确保您是否处于任何帧中。

如果框架中存在,则切换到该框架,然后尝试查找元素。

您希望
li
上单击
做什么?也许您想改为选择
a
?它有一组更独特的属性可供选择,这很有用…Div不能是ul的直接子级-您的html无效,这可能是您的选择器无法工作的原因,
financial report
无法单独选择,您必须先选择“每日”或“每月”,然后才能调用与
财务报告相关的相应元素,但仍然无法找到该元素
private final String finacialReportpath = "a[href^='/financial/financialReports.do']";
// Changed -------------------------------^
@FindBy(css = finacialReportpath)
private WebElement finacialReport;

public void clickfinacialReport(){

    wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(finacialReportpath)));
    wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(finacialReportpath)));

    this.finacialReport.click();

}
//a[contains(.,'Financial Reports')]