我有一个元素,在添加它各自的项目后获得不同的新css选择器,所以每次我在页面上添加一个项目,然后这个项目被添加为最后一个记录,那么我如何检测和捕获它的css选择器?
WebElement changingselec = driver.findElement(By.cssSelector("body > app > div > manage-corr-app > div > div.flex-5.work-area-large > manage-user-recipient-groups > div > div:nth-child(10)"));
changingselec.click();
请注意,div:nth-child(10)
指示最后一条当前记录是第十条记录,如果我添加一个新记录,那么它的选择器将把这个部分呈现为div:nth-child(11)
,因此我无法预测目标项的正确选择器。
发布于 2019-04-11 16:06:47
在CSS中有一个:last-child选择器。尝尝这个
WebElement changingselec = driver.findElement(By.cssSelector("body > app > div > manage-corr-app > div > div.flex-5.work-area-large > manage-user-recipient-groups > div > div:last-child"));
发布于 2019-04-11 16:41:39
如果新添加的<div>
是它的父级的最后一个子级,那么@MateMrše解决方案就是完美的。
使用div:last-child
的
div
元素:WebElement changingselec =driver.findElement(“body> app > div > manage-corr-app > div > div.flex-5.work-area-large > manage-user-recipient-groups > div > div:last-child"));
如果新添加的<div>
是其父类型的<div>
类型的最后一个子类型,则需要:
div:last-of-type
:选择作为其父元素的最后一个<div>
元素的每个<div>
元素:发布于 2019-04-12 23:25:44
我在工作中找到了一位年长同事对我的问题的回答,如下所示:
String changingselec = "";
int lastChildIndex = driver.findElements(By.cssSelector("body > app > div > manage-corr-app > div > div.flex-5.work-area-large > manage-user-recipient-groups > div > div.panel")).size();
//I replaced the last section in the selector above > div:nth-child(10) by > div.panel because all elements share the same parent panel
changingselec = driver.findElement(By.cssSelector("body > app > div > manage-corr-app > div > div.flex-5.work-area-large > manage-user-recipient-groups > div > div.panel:nth-child(" + Integer.toString(lastChildIndex) + ")")).click();
我希望这能帮到你。
https://stackoverflow.com/questions/55627546
复制相似问题