【发布时间】:2018-12-05 00:35:42
【问题描述】:
这是我要查找财务报告的 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>
我使用 CSS 选择器定位元素的 Java 代码,我还使用了等待直到元素可见:
private final String finacialReportpath = "div#cssmenu li:nth-child(3)";
@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();
}
【问题讨论】:
-
您希望
click在li上做什么?也许您想改为选择a?它有一组更独特的属性可供选择,这很有用... -
Div 不能是 ul 的直接子级 - 您的 html 无效,这可能是您的选择器不起作用的原因
-
IMO,不能单独选择
financial report,要么你必须先选择Daily或Monthly然后你可以调用点击相应的与financial report有关的元素