Java 无法使用我知道的所有元素定位器定位元素。HTML是使用CSS选择器生成的
这是我试图找到财务报告的HTML页面。我曾尝试使用XPath、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
<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')]