2016-10-28 51 views
1

我需要選擇與特定日期相關的值(小時)。例如在下面的html中,我需要根據數字6讀取數字24:20; 這是HTML:如何使用硒和c選擇文本#

<div class="day-ofmonth"> 
<div class="day-ofmonth"> 
<span class="day-num">6</span> 
<span class="available-time">24:20</span> 
</div> 
<div class="day-ofmonth"> 
<span class="day-num">7</span> 
<span class="available-time">133:50</span> 
</div> 
<div class="day-ofmonth"> 
<div class="day-ofmonth"> 

如果我使用:

IWebElement t_value = d.FindElement(By.XPath(".//*  [@id='calinfo']/div[9]/span[2]")); 
var t_again2 = t_value.GetAttribute("textContent"); 

我會得到24:20;但我需要根據數字6(6指的是一天中的月份)獲取24:20(在這種情況下)的值,而不是Xpath(每天將是不同的日期)。如果任何人都可以點我在正確的方向,謝謝

回答

1
string availableTime = null; 
// Find all elements with class = 'day-num' 
var dayNums = d.FindElements(By.XPath("//span[@class='day-num']")); 
foreach (IWebElement dayNum in dayNums) 
{ 
    // check if text is equal to 6 
    if (dayNum.Text == "6") 
    { 
     // get the following sibling with class = 'available-time', then get the text 
     availableTime = dayNum.FindElement(By.XPath("following-sibling::span[@class='available-time']")).Text; 
     break; 
    } 
} 
+0

它找到元素,但輸出是:OpenQA.Selenium.Remote.RemoteWebElement – user2669905

+0

' .Text'屬性將從WebElement中獲取文本內容。你是否錯誤地調用了'ToString()'?我建議你調試你所得到的WebElement。 – kurakura88

+0

謝謝,我能夠通過將xpath分割爲字符串和使用[i]:xpath(stringXpath)解析表來解決問題。 stringXpath = one + i + two – user2669905

0
xpath=//span[text()='6')]/following-sibling::span[1] 
0

一個一個班輪解決方案:

string availableTime = d.FindElement(By.XPath("//span[@class='day-num' and text()='6']/following-sibling::span[@class='available-time']")).Text; 
+0

我沒有收到這樣的元素,謝謝 – user2669905

+0

它在技術上與我之前的代碼相同,但都是在Selenium中完成的。您可能有隱藏您正在查看的元素的父/祖元素。 – kurakura88

+0

謝謝,我能夠通過將xpath分割爲字符串和使用[i]:xpath(stringXpath)解析表來解決問題。 stringXpath = 1 + i + 2 – user2669905