1

同じクラスと ID を持つ多くのプランボックスがあり、その中には多くの<p>タグと装飾されたテキストがあります。

<div class="planbox">
   <p class="baseprice">
      <span>
         <strike> $70 </strike>
      </span>
   </p>
   <p> New discount price is etc. </p>
</div>
<div class="planbox">
   <p class="baseprice">
      <span> $70 </span>
   </p>
</div>

さて、私のテストケースは - 基本価格が取り消し線の場合のみ<p> 'New discount price .. </p>表示され、それ以外の場合は表示されません。

テキストが取り消し線であるかどうかを確認する方法は? そして、これを取得したとしても<p> New discount.. </p>、テキストが打たれていない場合は表示されないことを確認するにはどうすればよいですか。

<p>表示されたかどうかを確認できるタグにクラスがないため。

<span>私の頭に浮かんだ解決策の 1 つは、タグにダミー クラスを 1 つ追加しfindChildren('span.dummyCLass')、それを使用すると、すべての Web 要素にダミー クラスが含まれるようになるというものでした。

次に、Web 要素にストライク タグがあるかどうかを確認します。ここで行き詰まりました。

当初はJqueryでの解決を考えていたのですが、新しいクラスとjqueryを追加しなくてもできるのでしょうか?

4

3 に答える 3

2

このタスクを実行するために、クラスを要素に追加する必要はありません。通常、HTML を編集する必要はありません。別の問題は...クラスを追加する要素を見つけることができれば、要素を見つけるためにクラスを追加する必要はありません。:)

このようなタスクにアプローチする方法は、関心のあるすべての要素を含む最も外側の要素を見つけることです。これを「コンテナー」と呼びます。この場合に実行したいことは、コンテナーを見つけてループし、取り消し線が引かれた価格と「新しい割引価格...」というテキストを探すことです。

コンテナはクラスDIVと一緒です。planbox取り消し線の価格はSTRIKEタグで示されます。Pタグ内に「新割引価格…」の文字が入っています。この情報を使用して、コードを記述できます。あなたが望む言語がわからず、Galen フレームワークに慣れていないため、これは Java です。

// gets the collection of containers using a CSS selector
List<WebElement> containers = driver.findElements(By.cssSelector("div.planbox"));
// loops through the containers
for (WebElement container : containers)
{
    // determine if the STRIKE tag exists
    boolean strikeExists = !container.findElements(By.tagName("strike")).isEmpty();
    // determine if the "New discount price is..." text exists in the 2nd P tag
    boolean discountPriceExists = container.findElements(By.tagName("p")).get(1).getText().trim().contains("New discount price is");
    // if both are true log a pass, otherwise log a fail
    if (strikeExists && discountPriceExists)
    {
        // log a pass
    }
    else
    {
        // log a fail
    }
}
于 2015-11-03T05:58:10.010 に答える
1

私はセレンをあまり使用していません。しかし、この jquery コードを Selenium に移植することはできます。

 //if there is a strike element
 if($(".baseprice span strike").length > 0){
   //next() will select the sibling of the p tag with baseprice class
   $("p.baseprice).next() != undefined){
     return true
   }else{
     return false
   }
}
于 2015-11-03T02:19:51.327 に答える
-1

これにはGalenを使用できます。そこで、特定のCSS プロパティを確認できます。

于 2015-11-04T07:58:30.103 に答える