Невозможно l oop данные Excel в Chrome с помощью Selenium VBA - PullRequest
2 голосов
/ 28 апреля 2020

Я нахожу трудности в функциональности l oop, ie. взятие значений из таблицы Excel и выполнение задачи. У меня есть этот сайт: http://dgftebrc.nic.in: 8100 / BRCQueryTrade / index. jsp, где мне нужно ввести IEC Код:

  1. 0906008051
  2. 0906008069

Позже введите

Счет доставки:

  1. 3929815
  2. 3953913
  3. 3979509

Я имею в виду, что на данный момент я жестко запрограммирован, но не могу заставить его работать в al oop, так как у меня большие данные и Я не могу написать это жестко, так как для номера 1 IEC у меня есть около 1000 SB.no, поэтому может быть 100 IEC номеров, следовательно, много накладных (SB.no) Нет.

Работа с закладками, которые я решил, но затем работа с несколькими счетами на доставку №. вызывает у меня проблемы.

Я мог бы справиться с этой большой частью кода:

Option Explicit

Public Sub multipletabtest()

Dim bot As WebDriver
Dim keys As New Selenium.keys
Dim count As Long

Set bot = New WebDriver
bot.Start "Chrome"
'count = 1
'While (Len(Range("A" & count)) > 0)

bot.Get "http://dgftebrc.nic.in:8100/BRCQueryTrade/index.jsp"

bot.FindElementByXPath("//input[@type='text'][@name='iec']").SendKeys "0906008051"
bot.FindElementByXPath("//input[@type='text'][@name='sno']").SendKeys "3929815"
bot.Wait 10000         'Time to enter the captcha

bot.FindElementByCss("[value='Show Details']").SendKeys keys.Control, keys.Enter          'Take the value from final result sheet
bot.SwitchToNextWindow

ThisWorkbook.Sheets("Sheet1").Range("B1") = bot.FindElementByXPath("//text()[.='Used']/ancestor::td[1]").Text
'Range("B" & count) = bot.FindElementByXPath("//text()[.='Used']/ancestor::td[1]").Text  'To extract the data
'bot.Window.Close


bot.SwitchToPreviousWindow
bot.FindElementByXPath("//input[@type='text'][@name='sno']").Clear

bot.FindElementByXPath("//input[@type='text'][@name='sno']").SendKeys "3953913"
bot.FindElementByCss("[value='Show Details']").SendKeys keys.Control, keys.Enter
bot.SwitchToNextWindow

ThisWorkbook.Sheets("Sheet1").Range("B2") = bot.FindElementByXPath("//text()[.='Used']/ancestor::td[1]").Text
'Range("B" & count) = bot.FindElementByXPath("//text()[.='Used']/ancestor::td[1]").Text


'count = count + 1
'Wend
bot.Quit
End Sub

И если кому-то интересно, почему Ctrl + Enter , это потому, что Captcha остается неизменным для других номеров накладных, поэтому выберите этот метод.

Я также пробовал оператор while, но затем извлеченные данные копируются дважды.

See image

1 Ответ

1 голос
/ 01 мая 2020
Option Explicit
Public Sub multipletabtest()

Dim bot As WebDriver
Dim keys As New Selenium.keys
Dim count As Long

Set bot = New WebDriver
bot.Start "Chrome"
bot.Get "http://dgftebrc.nic.in:8100/BRCQueryTrade/index.jsp"

count = 1
While (Len(Range("A" & count)) > 0)


bot.FindElementByXPath("//input[@name='iec']").SendKeys Range("A" & count)
bot.FindElementByXPath("//input[@name='sno']").SendKeys Range("B" & count)

bot.Wait 10000         'Time to enter the Captcha


bot.FindElementByCss("[value='Show Details']").SendKeys keys.Control, keys.Enter
bot.SwitchToNextWindow


If bot.FindElementsByXPath("//tr[2]//td[7]").count > 0 Then
Range("C" & count) = bot.FindElementByXPath("//tr[2]//td[7]").Text

If bot.FindElementsByXPath("//p[contains(text(),'No Data Found.....check the Input Parameters')]").count > 0 Then
Range("C" & count) = "No Data"


End If
End If
bot.Window.Close

bot.SwitchToPreviousWindow
bot.FindElementByXPath("//input[@type='text'][@name='sno']").Clear


count = count + 1
Wend

bot.Quit
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...