【问题标题】:Trying to find text element in a span尝试在跨度中查找文本元素
【发布时间】:2019-07-11 01:27:22
【问题描述】:

我正在用 Java 编写 selenium webdriver 测试。我需要测试单击 chrome 中没有 ID 或名称的“是”按钮。 我找不到要单击仅具有“是”作为其唯一标识符的按钮的元素。还有一个“否”按钮。

我尝试使用 xpath、类名来查找 WebElement,并且我尝试了 findElements 函数。什么都没有成功。

这是 HTML:

<span class="ui-btn-inner">
<span class="ui-btn-text popup-anchor-text">Yes</span>
</span>

我试过了:

WebElement yesBtn = browser.findElement(By.xpath("//div[@class='ui-btn-text popup-anchor-text']/span"));

WebElement yesBtn = browser.findElement(By.xpath("//span[.='Yes']"));

WebElement yesBtn = browser.findElement(By.xpath("//div[contains(text(), 'Yes')]"));

WebElement yesBtn = browser.findElement(By.xpath("//button[@class='ui-btn-text popup-anchor-text' and span='Yes']"));

WebElement yesBtn = browser.findElement(By.xpath("//div[@class='ui-btn-text popup-anchor-text' and span='Yes']"));

yesBtn.click();

List<WebElement> yesBtn = browser.findElements(By.className("ui-btn ui-shadow ui-btn-corner-all ui-btn-up-a"));

yesBtn.get(0).click();

错误信息: 无此类元素异常;没有这样的元素。无法定位元素。

【问题讨论】:

  • 您是否尝试过使用浏览器开发者工具选择xpath?
  • 检查跨度是否存在于另一个窗口中,因为它在类名中显示popup
  • 该跨度在另一个窗口中不存在。我尝试在 Chrome 中使用浏览器开发工具。我还没有找到好的资源。他们都只是说在 Elements pane1 中搜索 xpath 或在控制台面板中搜索 $() 。两者都没有回来。
  • 打开开发工具后,右键单击元素并在上下文菜单(最后一个选项)中点击Inspect。那应该将您指向该元素。然后尝试here中所示的xpath
  • 怎么样 Browser.findElement(By.xpath("//span[contains(text(), 'Yes')]"));

标签: java selenium xpath


【解决方案1】:

正确的 XPath 定位器是:

//span[text()='Yes']

以防万一你可以去normalize-space() function

//span[normalize-space()='Yes']

如果这没有帮助:

  1. 确保跨度不属于iframe,否则您必须先switch to the iframe,然后再尝试定位该元素。

    driver.switchTo().frame("your-frame");
    
  2. 确保使用WebDriverWait 类,以防万一该元素不能立即可用,这样 WebDriver 将执行多次查找尝试,轮询间隔

    new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[text()='Yes']")));
    

【讨论】:

    【解决方案2】:

    试试//span[@class='ui-btn-inner']/descendant::span[contains(text(), 'Yes')]。它应该会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      • 2022-11-14
      • 2016-09-15
      • 1970-01-01
      相关资源
      最近更新 更多