如何单击 Span 元素?

Posted

技术标签:

【中文标题】如何单击 Span 元素?【英文标题】:How to click a Span element? 【发布时间】:2022-01-06 19:58:19 【问题描述】:

由于某种原因,当我在 selenium ide 中使用 click 命令时,以下 xpath 不会点击。我试图点击的链接称为设备。我怎样才能让它点击?

xpath=//div[2]/section/nav/div[3]/div/div/span

这里是完整的代码:

<div title="Devices" class="asm-source-list-group-view">    <header role="heading" aria-hidden="true">Devices</header>    <div><div role="link" aria-selected="true" title="Devices" class="asm-source-list-item-view cw-being-hovered">    <span class="title" aria-hidden="true">Devices</span>    <span class="count cw-hidden" aria-hidden="true">0</span></div><div role="link" aria-selected="false" title="Assignment History" class="asm-source-list-item-view">    <span class="title" aria-hidden="true">Assignment History</span>    <span class="count cw-hidden" aria-hidden="true">0</span></div></div></div>

【问题讨论】:

这段代码不完整。第一个 /div、section 或 /nav 在哪里? 【参考方案1】:

如果您收到此元素当前不可见或其他错误,您必须执行WebDriverWait 直到该元素可见。

所以试试这个

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class="asm-source-list-group-view"]/header/div[@class="asm-source-list-item-view cw-being-hovered"]/span")));
element.click();

当您提供 Xpath 时,请尝试提供正确的类名。

Xpath = //div[@class="asm-source-list-group-view"]/header/div[@class="asm-source-list-item-view cw-being-hovered"]/span

【讨论】:

【参考方案2】:

要单击元素,您可以使用以下 XPath:

//div[@title="Devices"]//div[@title="Devices" and @class="asm-source-list-item-view cw-being-hovered"]//span

【讨论】:

【参考方案3】:

假设文本设备是唯一的, 你可以使用Xpath as //span[contains(text(),'Devices'] 然后使用单击此。它应该适用于driver.findElement(By.Xpath("//span[contains(text(),'Devices']").click();

【讨论】:

【参考方案4】:

检查你给她的 Xpath 是否是唯一的,如果它是唯一的并且它仍然想要点击我建议你尝试这 3 种方法来点击我,其中一种总是可以完成这项工作:

    Using Actions Lib :

WebElement elemCN = driver.findElement(By.xpath("your path"));
        int widthCN = elemCN.getSize().getWidth();
        act.moveToElement(elemCN).moveByOffset((widthCN / 2) - 2, 0).click().perform();

使用 JS:

javascriptExecutor js = (JavascriptExecutor) driver;
WebElement SubmitPaiement = driver.findElement(By.xpath("your path"));
js.executeScript("arguments[0].click();", SubmitPaiement);

最后是正常的.click()

【讨论】:

以上是关于如何单击 Span 元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何单击硒悬停后可见的元素?

阻止单击一次 span 元素上的 onClick 事件

3D效果切割轮播图

如何将硒与UL中的LI分开

javascript:如何在span中触发单击事件,有点难,高手请进

span内图片元素如何垂直居中