私が最近テストしているアプリケーションではAngular 4が更新されましたが、現在はテキストで一致できないcertian要素があります。ここapplicaitionの小さなHTMLのsnipitです:このxpathが目的の要素を見つけられないのはなぜですか?
<!----><div _ngcontent-c14="" class="form-group row">
<label _ngcontent-c14="" class="col-2 col-form-label" for="example-text-input">Lift Pump Relay</label>
<div _ngcontent-c14="" class="col-10">
<div _ngcontent-c14="" ngbdropdown="" class="dropdown">
<button _ngcontent-c14="" aria-haspopup="true" class="btn btn-secondary dropdown-toggle" ngbdropdowntoggle="" aria-expanded="false">Selected: Off</button>
<div _ngcontent-c14="" class="dropdown-menu">
<!----><button _ngcontent-c14="" class="dropdown-item"> On
</button><button _ngcontent-c14="" class="dropdown-item"> Off
</button><button _ngcontent-c14="" class="dropdown-item"> Toggle
</button>
</div>
</div>
</div>
</div>
<div _ngcontent-c14="">
<!---->
<!---->
<!---->
</div>
<!---->
<!---->
<!----><div _ngcontent-c14="" class="wi-actuator-control-buttons">
<button _ngcontent-c14="" class="btn btn-secondary">
<i _ngcontent-c14="" class="fa fa-times"></i> Exit
</button>
<!----><button _ngcontent-c14="" class="btn btn-secondary">
<i _ngcontent-c14="" class="fa fa-gears"></i> Start
</button>
<!---->
</div>
</div>
私はそうのようなテキストを使用してオン/オフ/トグルボタンにアクセスできるようにしています:
//button[contains(text(), 'On')] //using the on button in this example
が、いくつかのために開始ボタンと終了ボタンではこれがうまくいかない理由は次のとおりです。
//button[contains(text(), 'Exit')] //using Exit for this example
これはアプリの周りの多くの場所でのケースで、ボタン内にネストされている "i"要素に関連しているようです。 (例えばExitボタンには<i _ngcontent-c14="" class="fa fa-times"></i>
がネストされています)その "i"要素がボタンに存在すると、テキストで要素を一致させることはできません。
これはなぜ起こっているのですか?
(それは文字通り唯一のオプションでない限り)(単にCSSやjQueryのを使用するように私に教えないでください。それはこの質問が求めているものではありません)
私は解決策を見つけました:もし私が '。'私のxpathには 'text()'の代わりに、例えば以下のように動作します:// button [text()[contains(。、 'Exit')]]私はまだこれがなぜなのか不思議です。 – switch201