2017-09-28 4 views
0

Seleniumで要素のCSSクラス変更を探す方法はありますか?Java Selenium 3.5.3 css-classが変更されるのを待ちます

クラスは、ブラウザで現在選択されている要素をマークします。サイトはにクラスをリフレッシュし、変更をクリックオン

<span class="tabs2_tab guide_tab"> [...] </span> 

...

<span class="tabs2_tab guide_tab is-required"> [...] </span> 

私ができるので、」、私はすでに、ブラウザのロードが終了するのを待ってみましたが、それは実際に動作しません。ドライバーにを待ちます。 CSSクラスを変更します。どうやらこれは、サイトの状態を定義する場合に参照できる唯一の変更です。フレームがリフレッシュされたようですが、要素は全く同じで、クラスを除いてそのままです。

私は現時点では実際には使い慣れていないサイトで作業していますが、IDと似たようなものがないためです。言うまでもなく、これは私のサイトでもなく、コードを編集することもできません。

アイデア? C#のは、事前:)

+0

このcss要素「span.tabs2_tab.guide_tab.is-required'を待つのはどうですか? CSSが実際に変更されたときにのみ表示されます –

+0

それには悲しいことに、複数の要素があります。 – Phil

+0

だから、CSSの変更を確認するにはどうすればこの要素に到達しますか? –

答えて

0

おかげで私はWebElement属性が変更されており、私の知る限りでは、Java用の同じパターンを使用することができますかどうかを確認するためにこれを使用しています。このメソッドは、nameで指定された属性のvalueが変更された場合にのみ表示されます。

driverインスタンスがdesiredTimeoutのように良好であるとします。だから、あなたが持っているC#で:

public void WaitForAttributeToChange(IWebElement element, string name, string previousValue) 
    { 
     WebDriverWait wait = new WebDriverWait(driver, desiredTimeout); 
     wait.Until((d) => 
     { 
      if (element.GetAttribute(name) != previousValue) 
      { 
       return element; 
      } 
      return null; 
     }); 
    } 

その後あなたが好きそれを呼び出すことができます。

WaitForAttributeToChange(yourElement, "class", "previous_class_here"); 

これは、サイズと協力ので、私はあなたは、Javaにこれを翻訳した場合、それはトリックを行うこととし変更します。私が知る限り、Javaにはラムダ式があるので、うまくいくはずです。

関連する問題