【问题标题】:Selenium with Java: I can't find and element and click itSelenium with Java:我找不到元素并单击它
【发布时间】:2021-12-26 17:25:55
【问题描述】:

这是我需要点击的页面的按钮:

<div _ngcontent-jnk-c107="" class="btn btn-primary btn-outline" tabindex="0" ng-reflect-router-link="/opportunity/1">VIEW</div>

我无法在定位器中使用文本 view,因为同一页面中还有其他 22 个按钮具有相同的文本。

它们之间的唯一区别是路由器链接,我不知道如何调用。我已经尝试过使用链接文本和部分链接文本,但没有结果。

【问题讨论】:

  • 你试过 css div:[ng-reflect-router-link='/opportunity/1'] 吗?
  • driver.findElement(By.cssSelector("div:[ng-reflect-router-link='/opportunity/1']")).click();我试过这条线,它说“无效的选择器”
  • 对不起,请删除冒号:, driver.findElement(By.cssSelector("div[ng-reflect-router-link='/opportunity/1']"))

标签: java selenium xpath css-selectors webdriverwait


【解决方案1】:

相对于 ng-reflect-router-link 属性,对于文本为 VIEW 的元素上的 click(),您可以使用以下任一方法Locator Strategies:

  • 使用cssSelector

    driver.findElement(By.cssSelector("div.btn.btn-primary.btn-outline[ng-reflect-router-link='/opportunity/1']")).click();
    
  • 使用xpath

    driver.findElement(By.xpath("//div[@class='btn btn-primary btn-outline' and @ng-reflect-router-link='/opportunity/1']")).click();
    

但是,由于该元素是Angular 元素,因此要在该元素上为click() 诱导WebDriverWaitelementToBeClickable() 并且您可以使用以下Locator Strategies 之一:

  • 使用cssSelector

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.btn.btn-primary.btn-outline[ng-reflect-router-link='/opportunity/1']"))).click();
    
  • 使用xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='btn btn-primary btn-outline' and @ng-reflect-router-link='/opportunity/1']"))).click();
    

【讨论】:

    【解决方案2】:

    如果 ng-reflect-router-link 属性值对于此元素是唯一的,您可以使用以下 XPath 定位器:

    //div[@ng-reflect-router-link='/opportunity/1']
    

    【讨论】:

    • 我试过 driver.findElement(By.xpath("div[@ng-reflect-router-link='/opportunity/1']")).click();它仍然说“找不到元素”
    • 也许你错过了这个命令之前的等待/延迟?尝试在它前面加上Thread.sleep(5000); 之类的东西,看看它是否解决了问题。
    猜你喜欢
    • 2019-05-23
    • 2021-09-07
    • 2020-07-09
    • 2017-10-14
    • 2021-07-21
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多