如何使用Selenium和Java在HTML DOM中相对于相邻元素单击元素

问题描述 投票:0回答:2

我需要单击显示在“自动浏览器(元)标题”之前的缩略图。

我认为我需要使用以下组合:

  • 同级
  • 祖先
  • 前一个&
  • 后代

代码试用:

driver.findElements(By.xpath("//div[@class='*foundation-collection-item-title*'][@title='Automation-Browser (Meta) Title']//ancestor::div//coral-columnview-item-thumbnail")).size()`     = Found 52 elements with same property & I do not want to use index.

我只想单击下面的屏幕快照中“自动浏览器(元)标题” **之前显示的缩略图。

enter image description here

java selenium-webdriver xpath webdriverwait xpath-1.0
2个回答
0
投票

基于图像构建xpath有点困难。如果提供页面源代码示例,可能会得到更好的答案,但这可以使您指向正确的方向。

//*[contains(text(),"Automation-Browser")]/../preceding-sibling::coral-columnview-item-thumbnail[@class='foundation-colection-item-thumbnail']

改编自类似的帖子:How to use XPath preceding-sibling correctly


0
投票

至与元素相邻的缩略图上的click(),文本为自动浏览器(元)标题,您需要为elementToBeClickable()引入WebDriverWait,并且可以使用以下任意一种Locator Strategies

  • 使用xpathtitle属性:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='foundation-colection-item-title' and @title=\"Automation-Browser (Meta) Title\"]//preceding::coral-columnview-item-thumbnail[1]/img[@class='foundation-colection-item-thumbnail']"))).click();
    
  • xpathinnerText

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='foundation-colection-item-title' and contains(., 'Automation-Browser')]//preceding::coral-columnview-item-thumbnail[1]/img[@class='foundation-colection-item-thumbnail']"))).click();
    
© www.soinside.com 2019 - 2024. All rights reserved.