2016-11-25 119 views
0

我是新来的硒,我偶然发现一个错误。硒与VB.NET - 找不到元素

我试图从网站下载一个特定的文件(见代码),当我到达网站的最后一部分下载链接变得可用时,我无法选择'下载完整证券列表”。我已经尝试过使用XPath CSS选择器等等。

你们中的任何一位技术精通的人能否提出一个修正/建议?

任何帮助将是伟大的!

谢谢 吉汗

Sub downloadDBX() 
    'Initalise Chrome Browser For Execution 
    Dim driver As IWebDriver 
    driver = New ChromeDriver("C:\Users\cihan\Documents\Selenium") 

    'Navigate to the DBx Website 
    driver.Navigate().GoToUrl("https://etf.deutscheam.com/GBR/ENG/Disclaimer/Institutional") 

    'Get ElementID to navigate DBX Website 
    Dim agreeTerms As IWebElement = driver.FindElement(By.XPath("//*[@id='form']/div[3]/div[2]/div[2]/div/div/div[1]/div/div/div/div[2]/div[3]/div[2]/div/div[2]/div[1]/a")) 
    System.Threading.Thread.Sleep(1000) 
    agreeTerms.Click() 

    'Navigate to the equities section of DBx 
    Dim equitiesPage As IWebElement = driver.FindElement(By.XPath("//*[@id='form']/div[3]/div[2]/div[3]/span[1]/div/div/div[2]/div[3]/div/div[2]/div/ul/li[2]/a")) 
    System.Threading.Thread.Sleep(1000) 
    equitiesPage.Click() 

    'click relevant fund 
    Dim myFundInformation As IWebElement = driver.FindElement(By.PartialLinkText("ATX UCITS ETF (DR)")) 
    System.Threading.Thread.Sleep(1000) 
    myFundInformation.Click() 

    'change to "ETF Information tab" to gather required data 
    Dim myFundHoldings As IWebElement = driver.FindElement(By.XPath("//*[@id='ctl02_ctl15_ctl00_ctl01_126']/span")) 
    System.Threading.Thread.Sleep(1000) 
    myFundHoldings.Click() 


    'download my holdings 
    Dim myData As IWebElement = driver.FindElement(By.XPath("//*[@id='ctl02_ctl15_ctl00_container']div[2]/div[3]/div/div[4]/div[2]/div/a/div[2]/span")) 
    System.Threading.Thread.Sleep(1000) 
    myData.Click() 
End Sub 

回答

0

这是通过搜索链接文本,而不是下载链接的XPATH解决。之前和具体如下:

'download my holdings 
Dim myData As IWebElement = driver.FindElement(By.XPath("//*[@id='ctl02_ctl15_ctl00_container']div[2]/div[3]/div/div[4]/div[2]/div/a/div[2]/span")) 
System.Threading.Thread.Sleep(1000) 
myData.Click() 
现在

'download my holdings 
    Dim myData As IWebElement = driver.FindElement(By.LinkText("Download Full Securities List")) 
    System.Threading.Thread.Sleep(1000) 
    myData.Click()