2014-12-07 59 views
0

沒有工作,所以我不明白爲什麼這是行不通的。 (贏表格硒火狐webdrivers C#)點擊功能在硒驅動程序C#

driver.FindElement(By.ClassName("video")).Click(); 

有多個類名的在HTML格式的「視頻」,因此這可能是問題所在。

下面是HTML代碼的網站

<div class="video"> 
    <a style="background-image: url(&quot;http://pthumbnails.5min.com/10370971/518548518_c_240_135.jpg&quot;);" href="/watch/psychic-intervention-help-from-baby-amanda-518548518" data-id="518548518"> 
     <span>'Psychic Intervention': Help From Baby Amanda</span> 
    </a> 
</div> 

在HTML每次有變化的視頻旁邊的一切。請並感謝:)

回答

2

如果您想打開鏈接,div不是您想要點擊的元素。您需要點擊DIV中的鏈接(該<一個>元素)上。

如果你不知道鏈接文本或URL是什麼,但你知道它是在類「video」的div中,你可以通過它的xpath找到元素,通過尋找第一個<a>在div之後添加視頻類標記。

driver.FindElement(By.XPath("//div[@class='video']/a")).Click(); 

FindElement也總是選擇DOM中與條件相匹配的第一個元素,如果您只是想單擊任何視頻鏈接,這很好。

但是,如果有一個以上的div類視頻有<一個>元素,你要點擊一個特定的視頻鏈接,你可能要使用driver.FindElement 小號讓所有的視頻鏈接,比較信息,並點擊你想要的。

+0

感謝這工作完美:) – Programerszz 2014-12-07 18:40:44

0

因爲,有很多類名與「視頻」,你需要隔離你的xpath,使其指向相關的元素。

下面是做到這一點的方法:

通過使用DIV視頻類名和span標籤內的innerHTML /文本(假設只有1的innerHTML /文這樣的實例在整個頁面):

driver.FindElement(By.XPath("//div[@class='video']//span[contains(text(),'Help From Baby Amanda ')]")).Click(); 

2-通過使用'A' 標籤的唯一屬性 '數據ID'(假設數據-ID,事實上,唯一):

driver.FindElement(By.XPath("//a[@data-id='518548518']")).Click(); 

3-通過使用的一個標籤和範圍標記的innerHTML /文本(假設僅存在1在整個頁面的innerHTML /文本的這樣的實例):

driver.FindElement(By.XPath("//a/span[contains(text(),'Help From Baby Amanda ')]")).Click(); 

4-通過使用範圍標記的innerHTML /文本僅(假設僅存在1在整個頁面的innerHTML /文本的這樣的實例):

driver.FindElement(By.XPath("//span[contains(text(),'Help From Baby Amanda')]")).Click(); 

注意: - 有多種方式可以做到這一點。以上是基於給出的HTML代碼片段我可以想到的方式。