2016-11-28 47 views
0

我一直在努力從Table中獲取文本。當我檢查螢火蟲時,我可以從xpath獲取值,但是當我運行代碼時不會獲取該值。 表中所示如下─儘管可以在DOM中搜索,但Selenium/C#Xpath無法正常工作

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>

我曾嘗試以下Xpaths-

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司機我can't.Below is my code-

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

儘量給一些等待&檢查

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; 

如果你沒有在你的程序提供隱性或顯性的等待,那麼它可能是可能的一些的XPath會失敗,即使它可以在UI正常工作。這是因爲某些元素需要花時間在UI上加載,因此無法找到腳本失敗的元素&。也請嘗試您的代碼與explicit-wait,這是更好的方法,我也建議你使用relative xpath instead of absolute xpath

+0

嗨,我已經嘗試了隱式和顯式等待,但它不起作用。雖然嘗試過這在Java中,它工作得很好。 –

+0

如果上述解決方案運行良好,那麼您可以將此答案標記爲正確,以便對其他方面有用。 –

+0

它不起作用。 –

相關問題