【问题标题】:Selenium chaining CSS selectorSelenium 链接 CSS 选择器
【发布时间】:2016-07-24 01:27:10
【问题描述】:

我一直在尝试通过将元素与之前的选择器链接来查找元素,如下所示:

WebElement click = driver.findElement(By.cssSelector("td[data-container-for='NumberFrom'] input.k-formatted-value"));       
System.out.println(click.toString());

WebElement input1 = click.findElement(By.cssSelector(" ~ input"));
System.out.println(input1.toString());

但我得到了:

An invalid or illegal selector was specified
Element info: {Using=css selector, value= ~ input} 

当我使用 xpath 而不是 css 或单个 css 选择器时,一切正常:

WebElement input2 = click.findElement(By.xpath("//following-sibling::input"));
System.out.println(input2.toString());

WebElement input3 = driver.findElement(By.cssSelector("td[data-container-for='NumberFrom'] input.k-formatted-value ~ input"));
System.out.println(input3.toString());

我的 HTML 是:

<td role="gridcell" data-container-for="NumberFrom">
  <span class="k-widget k-numerictextbox" style="">
    <span class="k-numeric-wrap k-state-default">
      <input class="k-formatted-value k-input" type="text" tabindex="0" style="display: inline;" title="" aria-disabled="false" aria-readonly="false">
      <input class="k-input" type="text" name="NumberFrom" data-role="numerictextbox" role="spinbutton" style="display: none;" aria-valuemin="1" aria-valuenow="" aria-disabled="false" aria-readonly="false" data-bind="value:NumberFrom">
    </span>
  </span>
</td>

我的 input1 选择器有问题吗?

【问题讨论】:

  • 我不认为 Selenium 支持相对选择器。
  • 看来我必须坚持使用 XPath。

标签: java selenium css-selectors


【解决方案1】:

没有办法在 selenium 的 CSS 选择器中引用当前节点

要么使用 XPath 和同级轴,要么使用完整的 CSS 选择器。

【讨论】:

    【解决方案2】:

    以下选择器适用于我使用您的 HTML。

    input.k-formatted-value ~ input
    

    【讨论】:

    • 对不起,但这与我的问题无关。您不能将选择器用作相对选择器。
    猜你喜欢
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    相关资源
    最近更新 更多