通过Selenium和Java使用CssSelector识别新添加的元素
我有一个元素,在添加了它各自的项目后,它会得到不同的新css选择器,所以每次我在页面上添加一个项目时,这个项目都会被添加为最后一条记录,所以我如何检测和捕获它的css选择器通过Selenium和Java使用CssSelector识别新添加的元素,java,selenium,selenium-webdriver,css-selectors,katalon-studio,Java,Selenium,Selenium Webdriver,Css Selectors,Katalon Studio,我有一个元素,在添加了它各自的项目后,它会得到不同的新css选择器,所以每次我在页面上添加一个项目时,这个项目都会被添加为最后一条记录,所以我如何检测和捕获它的css选择器 WebElement changingselec = driver.findElement(By.cssSelector("body > app > div > manage-corr-app > div > div.flex-5.work-area-large > manage-user
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)
,因此我无法预测目标项的正确选择器。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"));
如果新添加的
是其父级的最后一个子级,那么@MateMrše解决方案就是完美的
- 使用
:选择父元素的最后一个子元素div:last child
:div
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"));
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-of-type"));
如果新添加的
是其父级
类型的最后一个子级,则需要:
- 使用
:选择父元素的最后一个div:last of type
元素: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"));
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-of-type"));
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();
我希望这有帮助