Извлечение изменения XPath в Selenium VBA - PullRequest
1 голос
/ 21 апреля 2020

Мне трудно извлечь (изменить) текст XPath на странице конечного результата. Этот веб-сайт: http://dgftcom.nic.in/licasp/IecDenQuery.asp Мало IEC Примеры кодов

  1. 0504057006 ---> Это приводит к результату, например ФИРМА имя
  2. 0504057007 ---> Это дает недействительный IEC код сообщения
  3. 0504057006
  4. 0504057007
  5. 0504057006

    Option Explicit
    
    Public Sub EntityList()
    
    Dim bot As WebDriver
    Dim count As Long
    
    Set bot = New WebDriver
    bot.Start "Chrome"
    count = 1
    While (Len(Range("A" & count)) > 0)
    
    bot.Get "http://dgftcom.nic.in/licasp/IecDenQuery.asp"
    bot.FindElementByXPath("//input[@type='text'][@name='IEC']").SendKeys Range("A" & count)
    bot.FindElementByXPath("//input[@type='submit'][@name='B1']").Click
    
    Range("B" & count) = bot.FindElementByXPath("/html/body/table[2]/tbody/tr/td/font/strong").Text
    'Range("B" & count) = bot.FindElementByXPath("//table/tbody/tr[1]/td[1]").Text
    
    bot.Wait 1000
    
    count = count + 1
    Wend
    bot.Quit
    End Sub
    

Проблема здесь в том, что при вводе следующего кода IEC происходит изменение в XPath, и на этом весь код заканчивается внезапно.

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

Существует одна из двух комбинаций в зависимости от того, есть ли у таблицы результатов результаты. Вы можете использовать css Или синтаксис. Должно быть быстрее чем xpath

Range("B" & count) = bot.FindElementByCss("table td, table + font").Text
1 голос
/ 21 апреля 2020

Попробуйте следующее XPath.

//font[contains(.,'IEC :')]

Код :

Range("B" & count) = bot.FindElementByXPath("//font[contains(.,'IEC :')]").Text
...