2017-01-12 4 views
-2

私は荒波のコードをしようとしていますが、常に真の値を返します。私はどこかで、あなたのxpathとして間違ってやっていると思いますボタンが有効または無効であることを見つけるためにisEnable()がselenium webdriverで機能していませんか?

   if(updatebuton_status=="true"){ 

       Thread.sleep(timmer*3); 
       //click on the update button     
       //ieDriver.findElement(By.xpath("html/body/div[1]/div/div/div/div[3]/div/div[1]/div/div/table/tbody/tr/td/table/tbody/tr/td[3]/div/div/div[2]/div[3]/div/div/div/div[2]/div/div[2]/div[2]/div/div/div[3]/div[2]/div/div/div/div[3]/div/div/div/div/div/div[2]/div[1]/div/div/div/div/table[1]/tbody/tr/td/table/tbody/tr/td[3]/span/table/tbody/tr[2]/td[2]")).click(); 
       ieDriver.findElement(By.xpath("/html/body/div[1]/div/div/div/div[3]/div/div[1]/div/div/table/tbody/tr/td/table/tbody/tr/td[3]/div/div/div[2]/div[3]/div/div/div/div[2]/div/div[2]/div[2]/div/div/div[3]/div[2]/div/div/div/div[3]/div/div/div/div/div/div[2]/div[1]/div/div/div/div/table[1]/tbody/tr/td/table/tbody/tr/td[1]/span/table/tbody/tr[2]/td[2]")).click();  

       }else{ 
       Thread.sleep(timmer*3); 
       //click on the Add button    
       ieDriver.findElement(By.xpath("/html/body/div[1]/div/div/div/div[3]/div/div[1]/div/div/table/tbody/tr/td/table/tbody/tr/td[3]/div/div/div[2]/div[3]/div/div/div/div[2]/div/div[2]/div[2]/div/div/div[3]/div[2]/div/div/div/div[3]/div/div/div/div/div/div[2]/div[1]/div/div/div/div/table[1]/tbody/tr/td/table/tbody/tr/td[1]/span/table/tbody/tr[2]/td[2]")).click(); 
       } 

enter image description here

+0

あなたのコードで 'isEnable()'( 'isEnabled()'が実際に使われていますか?私はそれがある行が表示されません。 'updatebuton_status'の様子を推測してほしいですか? – Andersson

答えて

0

は長すぎるrelative xpathを使用することをお勧めします。

boolean check= driver.findElement(By.id("tVLQur-btn")).isEnabled(); 

if(check) // if `check` returns true then go in if condition 
{ 
    driver.findElement(By.id("tVLQur-btn")).click(); 
} 
else 
{ 
    // DO SOME OTHER FUNCTIONALITY 
} 

もし編集 - あなたの要素がidを持っている場合、その後、直接

私はあなたがその要素をチェックしている同じ行うには 使用以下の方法が表示されているかわからない、それを使用あなたのボタンのIDは動的であり、次にxpathを使用して要素を検索します。

//td[contains(.,'Update')]/../preceding-sibling::tr//button 

それは私があなたが二つの文、位置要素への1つにラインを破る非常に少なくともあればと考えているあなたの更新ボタンを見つけて、それが

+0

申し訳ありませんが、私は使用しているコードの下に行が見逃されています。ブール値updatebuton_status = ieDriver.findElement(By.xpath( "html/body/div [1]/div/div/div/div [3]/div/div [1]/div/div/table/tbody/tr/td/div/div [2]/div [2]/div [3]/div/div/div [2]/div/div/div/div/div [1]/div/div/div/div [3]/div [2]/div/td [1]/tbody/tr/td/table/tbody/tr/td [3]/span/table/tbody/tr [2]/td [2] "))isEnabled(); \t \t \t \t \t \t \t \t \t \tしかしIDは静的ではありませんので、私はxpthを使用しています。 – user2968009

+0

rあなたは 'id'を使って更新ボタンを得ることができませんか? – NarendraR

+0

番号。 IDと名前は動的なので、私はそれを使うことができなかったので、私はxpath全体を使用しています。 – user2968009

0

を有効にするかではありません天気予報をチェックします

boolean check= driver.findElement(By.xpath("//td[contains(.,'Update')]/../preceding-sibling::tr//button")).isEnabled(); 

などが挙げられるが、次はその有効な状態を確認するために、問題が(おそらく)要素の場所にあることがわかります。これはweb要素にnulを返し、isEnabledはnullポインタ例外を返します。一貫したIDがない場合は、比較的短いxpathsを使用する方法が常にあります。ブラウザーでxpathという単語が含まれているアドインがないか確認してください。そこにはxpathヘルパーがいろいろあります。 inspect要素のオプションは、少なくとも理論的には最も安全ですが、必ずしも最良ではありません。

関連する問題