使用 IList(WebElements)的"For Each"循环在读取内容 #VB.net 时停止



我创建了一个依赖WhatsApp聊天的桌面应用程序。

当我尝试使用"循环"时;对于每个";阅读每一次bubble聊天。

循环突然自动中断时,它发现";删除聊天"照片";,或";语音记录";。

这里是我的代码

Dim Dari As String = Driver.FindElement(By.ClassName(CssClassName.WA_DIV_NAMA_PENGIRIM)).Text
'baca per pengirim'
CheckOrAddKirimanByNama(Dari)
'baca per bubble chat'
Dim Last As IList(Of IWebElement) = Driver.FindElements(By.ClassName(CssClassName.WA_DIV_TEXT_CHAT_MESSAGE_IN))
Dim ListPesan As New List(Of TextChat)
For Each z As IWebElement In Last
Dim LastMsg = z.FindElement(By.CssSelector("div[Class='" & CssClassName.WA_SPAN_TEXT_CHAT & "']")).Text
Dim Time = z.FindElement(By.CssSelector("div[Class='" & CssClassName.WA_SPAN_TEXT_TIME & "']")).Text
Dim dtTime As DateTime = Convert.ToDateTime(Time).ToString("HH:mm")
Dim startTime As DateTime = DTPStart.Value.ToString("HH:mm")
Dim endTime As DateTime = DTPEnd.Value.ToString("HH:mm")
If dtTime >= startTime AndAlso dtTime <= endTime Then
ListPesan.Add(New TextChat(LastMsg, Time, 1, TextChat.STATUS_ACTIVE))
End If
Next
tempKiriman.AddItem(Dari, ListPesan)

这是我的另一堂课。

Public Class CssClassName
Public Shared WA_DIV_BARCODE As String = "_1G1FQ"
Public Shared WA_DIV_LIST_PENGIRIM As String = "_1MZWu"
Public Shared WA_DIV_NAMA_PENGIRIM As String = "YEe1t"
Public Shared WA_DIV_TEXT_CHAT_MESSAGE_IN = "message-in"
Public Shared WA_DIV_PICTURE_CHAT_MESSAGE_IN = "j9c-4"
Public Shared WA_DIV_BUTTON_DOWN As String = "_3DmTD"
Public Shared WA_SPAN_NOTIFICATION_ACTIVE As String = "VOr2j"
Public Shared WA_SPAN_NOTIFICATION_NON_ACTIVE As String = "_2gsiG"
Public Shared WA_SPAN_TEXT_ON_LIST_PENGIRIM As String = "_3MjzD"
Public Shared WA_SPAN_TEXT_CHAT As String = "_1wlJG"
Public Shared WA_SPAN_TEXT_TIME As String = "_185ho"
Public Shared WA_SPAN_TEXT_BOX_FOR_REPLY As String = "DuUXI"
End Class

请帮帮我…谢谢

根据现有信息,这些是我的最佳猜测,我希望其中一个能有所帮助:

  1. 驱动程序。FindElements(按.ClassName(CssClassName.WA_DIV_EXT_CHAT_MESSAGE_IN((

我看不到确切的定义,也看不到测试样本或结果,但我猜"WA_DIV_TEXT_CHAT_MESSAGE_IN"只返回纯文本聊天消息,所以你提到的其他消息(似乎所有其他消息(都没有被包括在内?

  1. ListPesan。添加(新的TextChat(LastMsg,时间,1,TextChat.STATUS_ACTIVE((是";TextChat"您描述的所有消息类型的公共基类

按关联:Dim ListPesan As New List(Of TextChat(你想在这里使用界面而不是TextChat吗?

无论如何,很抱歉,我不能确定,但看起来这些地方你可能需要加倍确保你使用的是相同的共享父/基类类型。

我找到了解决问题的方法。

通过改变IWebElement 中的读取模式

Dim LastMsg = z.Text.Substring(0, z.Text.Length - 5)
Dim Time = z.Text.Substring(z.Text.Length - 5)

最新更新