2016-11-25 3 views
0

Я новичок в Selenium, и я наткнулся на ошибку.Selenium with VB.NET - Не удается найти элемент

Я пытаюсь загрузить определенный файл с веб-сайта (см. Код), когда я доберусь до последнего раздела веб-сайта, на котором будет доступна ссылка для загрузки, у меня возникли проблемы с выбором «Загрузить полные ценные бумаги» Список'. Я пробовал с XPath CSS Selectors и так далее.

Может ли кто-нибудь из вас техно-опытных парней найти любезное предложение об исправлении/рекомендации?

Любая помощь будет замечательной!

Спасибо, Cihan

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()