2016-11-28 6 views
0

私はFirebugをチェックするとxpathから値を取得できますが、コードを実行すると値を取得しません。 テーブルは、私は、次のXpaths-DOMで検索することはできますが、Selenium/C#Xpathは機能しません

html/body/div[2]/div[5]/div[2]/div/article/section[1]/section[2]/div[4]/div[1]/article/div/table/tbody/tr[1]/td[1] 

html/body/div[2]/div[5]/div[2]/div/article/section[1]/section[2]/div[4]//table[@class='description__table']/tbody/tr[1] 

html/body/div[2]/div[5]/div[2]/div/article/section[1]/section[2]/div[4]/div[1]/article/div/table/tbody/tr[1]/td/following-sibling::td[3] 

しかし、私はセレン/ C#で値を取得しよう/ phantomJSドライバIを試してみました

div class="description__table-holder"> 
 
<table class="description__table"> 
 
<tbody> 
 
<tr> 
 
<td>Test: </td> 
 
<td>9780238905</td> 
 
<td>Pas: </td> 
 
<td>600</td> 
 
</tr> 
 
<tr> 
 
<td>Size: </td> 
 
<td>216 x 274mm</td> 
 
<td> Result: </td> 
 
<td> 9 To 12 </td> 
 
</tr> 
 
</tbody> 
 
</table> 
 
</div>

below-与えられ、できません。下が私のコードです。

var datanew = driver.FindElements(By.XPath("html/body/div[2]/div[5]/div[2]/div/article/section[1]/section[2]/div[4]//table[@class='description__table']/tbody/tr[1]")); 

        var other = ""; 
        ArrayList others = new ArrayList(); 

        foreach (var dat in datanew) 
        { 

         //var linkDriver = new FirefoxDriver();         
         other = dat.Text; 
         others.Add(other); 

        } 

        string test = driver.FindElement(By.XPath("html/body/div[2]/div[5]/div[2]/div/article/section[1]/section[2]/div[4]/div[1]/article/div/table/tbody/tr[1]/td/following-sibling::td[3]")).Text; 

答えて

0

みてくださいあなたは、XPathの一部は、それが正常にUI上で動作していても失敗する可能性があるかもしれない、あなたのプログラムの中で暗黙的または明示的な待ち時間を提供していない場合は、一部が&チェック

Thread.sleep(15); 
string test = driver.FindElement(By.XPath("html/body/div[2]/div[5]/div[2]/div/article/section[1]/section[2]/div[4]/div[1]/article/div/table/tbody/tr[1]/td/following-sibling::td[3]")).Text; 

を待つ得ました。これは、一部の要素がUIにロードするのに時間がかかり、要素が見つからないためです。&スクリプトが失敗します。また、explicit-waitでコードを試してみてください。それはもっと良いアプローチでもあります。私はあなたに使用することをお勧めします。relative xpath instead of absolute xpath

+0

こんにちは、私はすでに暗黙的と明示的な待機の両方を試しましたが、うまくいきません。 –

+0

上記の解決策がうまくいけば、この回答を正しいとマークして、他の回答が役立つようにすることができます。 –

+0

動作しません。 –

関連する問題