2013-03-11 10 views
21

OperaにPHPUnit_Seleniumの問題があります。テストコードで要素をクリックした場合、ページは読み込まれません。 Firefox、IE、Chrome、Safariなどの他のブラウザでは、正しく動作します。PHPUnit OperaでclickAndWait()関数が動作しない

コード:私はページがリロードされ、ブラウザでリンクをクリックした場合、タイムアウト後

click(link) 
waitForPageToLoad(120000) 

$browser->clickAndWait(link); 

それはセレンREMOTE CONTROLからの次のステップです。

私はSelenium RC v2.31.0とOperaバージョン12.41を持っていますが、Opera 11.50でもテストしています。

何が間違っていると思いますか?

+0

あなたはセレンバグトラッカーを検索したのですか? – cweiske

+0

はい、セレニウムバグトラッカーを検索しましたが、問題を解決できませんでした。 – Szymon

+0

Operaが正しく処理していないJavascriptイベントにリンクがバインドされている可能性はありますか? Operaでリンククリックを手で行うことはできますか? –

答えて

0

最終的な解決策を提案するには十分な情報がありませんでしたが、@Andreで提供されているコメントで結び付けられています。 "墨塗り"ブラウザでは、 "Copy xPath"誤解を招く恐れがあり、xPathの構造に応じて、テスト中に多くの問題が発生します。例えば

<html> 
    <head></head> 
    <body> 
     <div> 
      <table> 
       <tr> 
        <td>test</td> 
       </tr> 
       <tr> 
        <td>value</td> 
       </tr> 
      </table> 
     </div> 
    </body> 
</html> 

上記のコードは非常に最小限であるが、ブラウザは次のいずれかの試験のXPathを報告する:

  • /HTML /本体/ DIV /テーブル/ (テストとのより正確な一致)
  • /html/body/div/table/tr [1]/td [1] html/body/div/table/tbody/tr/td(no追加されたtbodyをtice)

などです。明らかに、あなたはもっとユニークな識別子(IEのid - > // * [@ id = "someElement"])を使ってこの問題にぶつからないでしょうが、私たちが引き継いだ多くのプロジェクトでは、パスは「消毒することをブラウザ上で検索された

  • :元々唯一のブラウザで行われ、我々は1のようなエラーが報告され、それが「消毒」のブラウザでは、二つの問題のいずれかを作成行う判明見てきました"、そして、要素を見つけられなかったブラウザで実行してください。
  • 「サニタイズ」されていないブラウザでパスが取得され、サニタイズするブラウザで実行されました。

両方の問題が一致しません。

0

私は同様の問題を抱えていました。残念ながら、私が思いついた解決策は...「スリープ」を追加することでした。醜い、しかし働く。

-1

ポップアップまたは作成をクリックした後、関数「waitForElementPresent」または「waitForChange」をクリックした後にコールするだけです。

clickAndWait = click()+ some Wait function ....良い習慣は、非同期呼び出しであなたを保存する、クリック前の待機関数に使用されます。

selenium.waitForElementPresent(“myFooElement”); 
selenium.click(“myFooElement”); 
1

私は、これは私が思いついた解決策だった、としてもFFでこの問題を抱えていた。

def wait_for_element_by_id(eid): 
    "Wait for an element to be present" 
    element = WebDriverWait(driver, 10).until(
     EC.presence_of_element_located((By.ID, eid)) 
    ) 
    return [] 
関連する問題