我有以下HTML代码,我需要在其中检测页面上显示的记录数并选择正确的记录。但是,使用Firefox检查元素时会发现记录是具有相同的类名,而WebElement的ID是动态创建的。
如果使用它来按标记名查找,它将返回100多个Web元素。
[我想知道如何使用XPath或CSS选择器来识别显示在页面上的第一条记录。
WebElement menuList = driver.findElement(By.cssSelector(".scrollable-content"));
List<WebElement> search_li = menuList.findElements(By.tagName("div"));
WebElement searchresult = driver.findElement(By.ByXPath.className("grid-view-drop-area ng-star-inserted"));
searchresult.click();
扩展的<div>
标签的HTML的更多信息,将有助于我们构造一个规范的答案。但是,对于页面上显示的记录数,您必须为visibilityOfAllElementsLocatedBy()
引入WebDriverWait,并且可以使用以下任何一个Locator Strategies:
cssSelector
:
System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("div.grid-view-drop-area.ng-star-inserted[fid^='grid-row']"))).size());
xpath
:
System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//div[@class='grid-view-drop-area ng-star-inserted' and starts-with(@id, 'grid-row')]"))).size());