Я искал некоторое время, но не могу найти решение. Также найдите аналогичную ссылку на этой странице, и она заблокирована из-за дублирования, но на самом деле она не является дубликатом чего-либо. это не Java или # c или другие упомянутые языки. это коды VBA и селена. по ссылке ниже в режиме отладки (F8) все работает гладко, однако в режиме выполнения (F5) он не заполняет разделы даты и даты или частично.
Есть ли у вас какие-либо идеи? Кроме того, веб-сайт является корпоративным веб-сайтом, поэтому, к сожалению, я не могу им поделиться.
Option Explicit
Sub Download_Report4()
Dim obj As New Selenium.WebDriver
Dim ele As WebElement
obj.Start "Chrome"
obj.Get "https://test.com"
Dim Username, Password As Range
Set Username = ActiveWorkbook.Sheets("LoginData").Range("B1")
Set Password = ActiveWorkbook.Sheets("LoginData").Range("B2")
obj.FindElementById("UserName").SendKeys Username.Text
obj.FindElementById("Password").SendKeys Password.Text
obj.FindElementById(LoginButton").Click
Application.Wait Now + TimeValue("00:00:02")
Dim Rows, x
For x = 2 To Sheet1.UsedRange.Rows.count Step 1
If IsEmpty(Sheet1.Range("A" & x)) Then
Exit For
Else
obj.FindElementByName("date$From").Clear
obj.FindElementByName("date$To").Clear
obj.FindElementByName("date$From").SendKeys ("01,03,2017")
obj.FindElementByName("date$To").Click
obj.FindElementByName("date$To").SendKeys (Sheet1.Range("B" & x))
obj.FindElementById("btnSearch").Click
obj.FindElementById("btndownload").Click
End If
Next
End Sub
, кстати, формат даты правильный. если введено 01.03.2017 chrome добавить даты нечетными. раздел месяца к дате год является правильным и ничего не добавляет к разделу месяца.
Я приведу немного больше деталей. в приведенном ниже коде для inte rnet explorer работает очень хорошо, если только после нажатия кнопки загрузки, ie 11 запрос «хотите открыть или сохранить» останавливает мой макрос и завершается цикл. это причина, по которой я перемещаю макрос селена.
Public Sub Download_Report()
Dim ie As New InternetExplorer
Dim myElem As Variant
ie.Visible = True
ie.navigate "https://test.com"
ie.document.getElementById("UserName").Focus
ie.document.getElementById("LUserName").Value = Sheets("LoginData").Range("B1").Text
ie.document.getElementById("Password").Focus
ie.document.getElementById("Password").Value = Sheets("LoginData").Range("B2").Text
ie.document.getElementById("LoginButton").Click
End If
Dim Rows, x
For x = 2 To Sheet1.UsedRange.Rows.count Step 1
If IsEmpty(Sheet1.Range("A" & x)) Then
Exit For
Else
While .Busy Or .readyState < 4: DoEvents: Wend
ie.document.getElementsByName("date$From")(0).Value = Sheet1.Range("A" & x).Text
While .Busy Or .readyState < 4: DoEvents: Wend
ie.document.getElementsByName("date$To")(0).Value = Sheet1.Range("B" & x).Text
While .Busy Or .readyState < 4: DoEvents: Wend
ie.document.getElementById("btnSearch").Click
While .Busy Or .readyState < 4: DoEvents: Wend
ie.document.getElementById("btndownload").Click
End If
Next
End With
End Sub
дата может быть использована в качестве средства выбора после щелчка, но также может быть заполнена как текст, код раздела даты на веб-сайте, как показано ниже. также дата в разделе так же, как. Код сайта (сайт находится за брандмауэром)
<input name="date$From" type="text" value="18/02/2020" size="6" id="date_tbFrom" class="searchSelect">
<input type="hidden" name="date_From_Client" id="date_From_Client">