当前位置: 首页 > 知识库问答 >
问题:

根据WebDriver中的跨度值单击复选框

罗安和
2023-03-14

我想选择以下基于“好市多批发公司”值的复选框:

<td role="gridcell" style="" title="" aria-describedby="entity-search-grid_selected">
  <input type="checkbox" name="chkbox" class="itmchk" value="110504">
</td>
<td role="gridcell" style="font-weight: bold;" title="Costco Wholesale Corporation" aria-describedby="entity-search-grid_name">
  <div class="tree-wrap tree-wrap-ltr" style="width:18px;">
    <div style="left:0px;" class="ui-icon ui-icon-triangle-1-s tree-minus treeclick"></div>                                         
  </div>
  <span class="cell-wrapper">Costco Wholesale Corporation</span>
</td>

我尝试了以下代码:

driver.findElement(By.xpath("//td[span[text()='Costco Wholesale Corporation']]/preceding-sibling::td/input[@name='chkbox'"));

但是得到以下例外:

无效的选择器:无法找到一个元素与xpath表达式//td[span[text()='Costco批发公司']]/前驱兄弟姐妹::td/输入[@name='chkbox',因为以下错误'//td[span[text()='好市多批发公司']]/前面的兄弟姐妹::td/输入[@name='chkbox"

您能帮助编写xpath选择器吗。

共有3个答案

邵毅
2023-03-14

您提供的xPath语法不正确。。尝试使用下面的xPath-

String xPath = "//span[text()='Costco Wholesale Corporation']/preceding::input[@name='chkbox']";

 driver.findElement(By.xpath(xPath));

希望能有帮助……:)

柯宜年
2023-03-14

我想知道为什么要使用xpath。一旦有人改变了网站的结构,整个选择器就一文不值了。我真的建议尽可能长时间地使用css选择器。在这种情况下,它只是:

driver.findElement(By.css("input[name='chkbox'][value='110504']"));

这种方法的主要优点是,只有与元素直接相关的更改才会迫使您更改选择器。

当然,我的选择器可能是无效的,如果有一些部分的网站,你们并没有告诉我们,这可能会影响选择器。但即便如此,我相信有一种方法可以使用css更直接地访问元素。

姬俊能
2023-03-14

第一个问题是xpathtd[span[text()肯定是无效的。请记住,[...]语法仅用于筛选器,而不是用于定义路径。所以它必须是:

//td/span[text...

此外,由于您首先选择了span,因此需要返回到td级别,然后选择兄弟姐妹:

//td/span[text()='Costco Wholesale Corporation']/../preceding-sibling::td/input[@name='chkbox']

鉴于您的超文本标记语言,您还可以将其简化为选择tdbyt title,然后选择其同级:

//td[@title='Costco Wholesale Corporation']/preceding-sibling::td/input[@name='chkbox']
 类似资料:
  • 我目前正在工作Java/Selenium webdriver自动化。然而,我被困在这个特定的部分,我无法使webdriver点击基于值的复选框。 当我不使用xpath的Axes部分时,它可以工作,但是它只能选中第一个复选框 下面是html的一个片段

  • 我正在使用它来自动化一个GWT应用程序。有一个包含以下列的表:checkbox,userID,Username,Fname,LName,email。 我得到的错误是:selenium.common.exceptions.invalidselectoreXception:消息:无效选择器:无法找到具有xpath表达式//tr[td[contains(text()='agency_group_0_ag

  • 问题内容: 角度1.2: 我的功能状态不正确? 单击后,我想要状态。 问题答案: 和的执行顺序不明确,因为它们没有定义明确的优先级。相反,你应该使用或上,以确保您获得的正确值 模型 变量。 在您的情况下,这应该可以工作:

  • 我有下面的标签,这是一个多个选择选项按钮的标签,每个选择有它的div里面有一个标签,然后在这个标签里面有一个ID,我需要用它来确定我想要selenium点击哪个。 我的问题是如何选择正确的标签基于它的儿童ID?

  • 当我第一次点击它的时候,它点击了,但是没有关掉... 我试过这个,它检查和取消检查,但只有一次。 这个对我也不起作用。 null null

  • 问题内容: 我正在使用Java学习Selenium Webdriver。作为一个学习示例,我尝试打开MakeMyTrip,访问“ 国际航班”页面,然后单击Google Chrome中的“ 单向” 单选按钮。我尝试了其他方法来定位此单选按钮,但仍无法正常工作。请在我的代码示例下面找到。 谁能帮我解决这个问题? 问题答案: 使用以下代码:- 享受..如果仍然遇到任何问题,请与我联系:)