如何使用带有标记+类名+内部html文本的CSS定位器来标识范围中的按钮

时间:2015-04-09 11:31:38

标签: selenium selenium-webdriver automation css-selectors qa

我正在使用selenium FirefoxDriver自动化测试用例(我是新手)

我需要一种方法来定位Button(我认为它实现为div / span)

当我在Selenium IDE //span[contains(text(), 'Login')]

中尝试时,此xpath定位器可以正常工作

此外,我可以使用span标记和类名css=span.x-btn-button

来使用此CSS定位器

我需要的是一种使用带有标签+类名+内部html文本的CSS定位器的方法。 (这将帮助我处理我的应用程序中的一些其他UI元素)

HTML如下

<div id="toolbar-1035" class="x-toolbar x-docked x-toolbar-footer x-docked-bottom x-toolbar-docked-bottom x-toolbar-footer-docked-bottom x-box-layout-ct" style="right: auto; left: 0px; top: 141px; width: 223px;">
  <div role="presentation" class="x-box-inner " id="toolbar-1035-innerCt" style="width: 217px; height: 22px;">
    <div role="presentation" class="x-box-target" id="toolbar-1035-targetEl" style="width: 217px;">
      <a id="button-1036" unselectable="on" hidefocus="on" class="x-btn x-unselectable x-box-item x-toolbar-item x-btn-default-small x-noicon x-btn-noicon x-btn-default-small-noicon" style="right: auto; top: 0px; margin: 0px; left: 0px; width: 75px;" tabindex="0">
        <span unselectable="on" class="x-btn-wrap" role="presentation" id="button-1036-btnWrap">
<span role="presentation" class="x-btn-button" id="button-1036-btnEl" style="background-color: transparent;">
<span unselectable="on" class="x-btn-inner x-btn-inner-center" id="button-1036-btnInnerEl" style="background-color: transparent;">Login</span>
        <span style="" unselectable="on" class="x-btn-icon-el  " id="button-1036-btnIconEl" role="presentation"></span>
        </span>
        </span>
      </a>
    </div>
  </div>
</div>

2 个答案:

答案 0 :(得分:1)

这篇文章有一些非常好的方法可以使用xpath / css进行元素识别!

Is it possible to get next sibling using cssContainingText in Protractor

函数cssContainingText特定于Protractor。

答案 1 :(得分:1)

<击> #Css

<击>
findElement(By.cssSelector("span.x-btn-button:contains('Login'));

请记住,每个浏览器都不支持CSS中的这个伪类,特别是PhantomJS不支持此功能(可能有其他浏览器无法使用,但这是我记得的那个。)

来自Here,约占网页总数的75%。

编辑:

看了这个之后,似乎&#34;的伪选择器包含(&#39;&#39;)&#34;不再符合CSS3规范。 Reference

如果您的Web应用程序使用JQuery,您可以使用类似的选择器检索该方法,否则,您将不得不将JQuery加载到页面然后使用它,但那真的不会使用CSS,而是JQuery中使用CSS语法的javascript选择器函数。

结论:

目前,您所要求的是(官方)CSS不支持。