如何在css页脚中定位元素

时间:2015-06-12 07:47:59

标签: html css ruby watir page-object-gem

页面上有2个文本“ok”和“oops”,其中一个文本位于<footer>class=> 'meta'span(:alert){div_element(:class => 'application').div_element(:class => 'txt').span_element(:class => 'app-text')} 。 我想验证页脚文本,我正在使用

<footer>
  <div class="application" style="opacity: 1;">
    <div class="txt" style="background-color: transparent;">
      <span class="app-txt" style="background-color: transparent;">ok</span>
    </div>
  </div>
</footer>

<div class="meta">
  <div class="application" style="opacity: 1;">
    <div class="txt" style="background-color: transparent;">
      <span class="app-txt" style="background-color: transparent;">oops</span>
    </div>
  </div>
</div>

但它使用元“类”文本“oops”验证两者具有相同的div路径。 如何在页脚内部找到span类“app-txt”?

 public static int solution(int[] A)
    {
        double sum = A.Sum(d => (double)d);
        double leftSum=0;
        for (int i = 0; i < A.Length; i++){
            if (leftSum == (sum-leftSum-A[i])) {
                return i;
            }
            else {
                leftSum = leftSum + A[i];
            }
        }
        return -1;
    }

3 个答案:

答案 0 :(得分:1)

要找到 ok ,请使用:

footer .app-txt

要找到 oops ,请使用:

.meta .app-txt

footer .app-txt {color: red;}
.meta .app-txt {color: orange;}
<footer>
  <div class="application" style="opacity: 1;">
    <div class="txt" style="background-color: transparent;">
      <span class="app-txt" style="background-color: transparent;">ok</span>
    </div>
  </div>
</footer>

<div class="meta">
  <div class="application" style="opacity: 1;">
    <div class="txt" style="background-color: transparent;">
      <span class="app-txt" style="background-color: transparent;">oops</span>
    </div>
  </div>
</div>

答案 1 :(得分:1)

鉴于您知道可以根据其祖先元素区分两个跨度,即<footer><div class="meta">,您应该在定位器中包含它。

解决方案1 ​​ - 使用嵌套定位器

页面对象可以是:

class MyPage
  include PageObject

  # The span in the footer
  span(:in_footer) { footer_element.span_element(class: 'app-txt') }

  # The span in the meta div
  span(:in_meta) { div_element(class: 'meta').span_element(class: 'app-txt') }
end

正如您所看到的,通过包含差异化的祖先元素,即footer_elementdiv_element(class: 'meta'),您可以获得两个文本:

p page.in_footer
#=> "ok"

p page.in_meta
#=> "oops"

解决方案2 - 使用CSS选择器

或者,根据您对CSS选择器(或XPath)的熟悉程度,您可以使用@ K.RajaSekharReddy或@PraveenKumar提到的CSS选择器来缩短页面对象。

使用CSS选择器,页面对象可以是:

class MyPage
  include PageObject

  span(:in_footer, :css => 'footer .app-txt')
  span(:in_meta, :css => '.meta .app-txt')
end

答案 2 :(得分:0)

找到确定用途:

footer >.application >.txt >span.app-txt {
   color: blue;
}

footer >span.app-txt {
   color: blue;
}

找到oops使用:

.meta >.application >.txt >span.app-txt {
   color: orange;
} 

.meta >span.app-txt {
   color: orange;
}