单击提交按钮后找不到元素

时间:2020-06-24 12:31:28

标签: excel vba selenium selenium-webdriver

整张表格填写完后,网页加载出现问题。 下一页是我需要进行数据提取的地方。 这是网站: https://enquiry.icegate.gov.in/enquiryatices/sbTrack

请在此处找到示例数据:

SELECT LOCATION : HYDERABAD ICD (INSNF6)
 
ENTER SHIPPING BILL No. :  8991212

ENTER SHIPPING BILL DATE :  29-09-2017

ENTER IMAGE LETTERS : This is the Captcha( to be entered manually) 

问题是,一旦单击“提交”按钮,就不会加载下一页,因此下面几行试图查找根本没有加载的元素。 我的朋友已经使用Java进行了尝试,并且似乎可以使用(.Refresh),但是在VBA中,这是一个问题。

请有人在这里帮助我。

Option Explicit
Sub icegateNewww()
Dim e, bot As WebDriver, ele As SelectElement, eledpTD As Object, r As Long, i As Long
Dim elem  As WebElement
Set bot = New WebDriver
r = 1

With bot
.Start "Chrome"
While (Len(Range("A" & r)) > 0)

          .Get "https://enquiry.icegate.gov.in/enquiryatices/sbTrack"
'line:
        .FindElementByXPath("//select[@id='location']").SendKeys Range("A" & r)
        .FindElementByXPath("//input[@id='sbNO']").SendKeys Range("B" & r)
        .FindElementByXPath("//img[@src='/enquiryatices/image/Dateicon.gif']").Click            'To open date picker
                    
        'To pick up the date
        
        Set ele = .FindElementByName("calendar-month").AsSelect
        ele.SelectByIndex Month(Cells(r, 3)) - 1
        Set ele = .FindElementByName("calendar-year").AsSelect
        ele.SelectByValue CStr(Year(Cells(r, 3)))
        Set eledpTD = .FindElementsByClass("dpTD")
        For Each e In eledpTD
            If Val(e.Text) = Val(Day(Cells(r, 3))) Then
                e.Click: Exit For
            End If
        Next e
               
      .FindElementById("captchaResp").Click
      .Wait 10000
      .FindElementByXPath("//input[@id='SubB']").Click               'To click on the submit button
     
'If (.FindElementByXPath("//span[contains(text(),'Invalid Code! Please try again!')]") = "Invalid Code! Please try again!") Then
'End If
   
'GoTo line

       .Wait (3000)
         
                                
      'Below lines are to click on each element & extract the data
      
      .FindElementByXPath("//span[contains(text(),'SB Details')]").Click
      Range("D" & r) = .FindElementByXPath("//div[@id='sbICES_Details']//center//div//table").Text
      
      
      .FindElementByXPath("//span[contains(text(),'Item Wise Reward Details')]").Click
      Range("E" & r) = .FindElementByXPath("//div[@id='itemWiseRewardTdId']//center//div//table").Text
      
r = r + 1
Wend
End With
End Sub

0 个答案:

没有答案