【问题标题】:How to locate the element that has the same class using Selenium and Java [closed]如何使用 Selenium 和 Java 定位具有相同类的元素 [关闭]
【发布时间】:2019-08-16 04:32:11
【问题描述】:

我无法为具有相同类的 BI 仪表板窗格找到合适的元素

<a class="mi-title" deatta-no-in="inTitleShowed('folder')" daetta-ni-href="" data-ng-bind="navverTreeItemScope.listItem.title" style="" xpath="1">Staging - ALCDE</a>`

它们看起来都像上面的元素,唯一改变的是仪表板名称Staging - ALDE

【问题讨论】:

标签: java selenium xpath webdriverwait xpath-1.0


【解决方案1】:

正如您提到的,唯一改变的是仪表板名称,即 Staging - ALDE,因此您必须为 @987654322 引入 WebDriverWait @ 并且您可以使用以下任一Locator Strategies

  • linkText:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("Staging - ALCDE"))).click();
    
  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@class='mi-title' and text()='Staging - ALCDE'][starts-with(@data-ng-bind, 'navverTreeItemScope')]"))).click();
    

【讨论】:

  • 感谢您的快速帮助,两个代码均无效。这次我没有收到任何错误消息,也没有点击仪表板。请问,有什么理由吗?谢谢
  • @PeaceT 没有点击是什么意思?你的问题和这个答案都是为了 locating 元素。你想click()吗?
  • 抱歉不清楚,是的,我也想点击它。但是当我添加 click();到代码,我得到一个语法错误'类型不匹配:无法从 void 转换为 WebElemen
  • @PeaceT 查看答案更新并让我知道状态。
  • @DebanjabB Woohoo 它的工作。非常感谢你是最棒的。我正在做一个专业的项目。请,我会再次伸出援手。再次感谢您
【解决方案2】:

你可以试试这个:

WebElement elmt = driver.findElement(By.xpath("(//*[@class='mi-title'])[1]"));

[1] 更改为[2] 等,如果有多个,这是元素的编号。

【讨论】:

  • 您好,此代码不起作用,它在线程“main”org.openqa.selenium.NoSuchElementException 中返回错误消息异常:没有这样的元素:无法找到元素:{“method”:“xpath” ,"选择器":"(//*[@class='mi-title'])[1]"}
【解决方案3】:

您也可以使用此 xpath 来识别元素

driver.findelement(By.xpath("//*[@data-ng-bind='navverTreeItemScope.listItem.title']"))

【讨论】:

    猜你喜欢
    • 2018-04-04
    • 2015-10-04
    • 2019-08-24
    • 2021-08-15
    • 1970-01-01
    • 2020-06-17
    • 2021-09-05
    • 2019-09-06
    相关资源
    最近更新 更多