Одиночная приглашенная запятая в QuerySelector - PullRequest
0 голосов
/ 24 января 2019

HTML

<a onclick="loadYearPage('2018-2019')" style="cursor: pointer;">2018-2019</a>

Как настроить таргетинг элемента с помощью селектора CSS

Я пробовал приведенные ниже коды, но не работал

ie.document.querySelector("[onclick='loadYearPage('2018-2019')']").Click

Просьба предложить

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Ответ Тима был бы моим предпочтением, так как он ускользает.Вы также можете указать несколько селекторов атрибута css = значение с разными операторами и объединить как синтаксис А

ie.document.querySelector("a[onclick^=loadYearPage][onclick*='2018-2019']")

Если любая из этих подстрок появляется на странице только один раз, вы можете уменьшить ее, например

ie.document.querySelector("a[onclick*='2018-2019']")

Используя предоставленную вами страницу, вы действительно можете использовать модификатор contains (*) для поиска по частичной строке в значении атрибута onclick.Ниже приведен пример, где вы можете передать год в качестве переменной.Я пошел на более короткий селектор для большей скорости.Требуется небольшое ожидание присутствия элемента.Я использовал синхронизированный цикл.

Option Explicit  
'https://www.nseindia.com/products/content/derivatives/currency/cd_historical_businessGrowth.htm
Public Sub PerformClick()
    Dim ie As InternetExplorer, t As Date, ele As Object
    Const MAX_WAIT_SEC As Long = 10
    Set ie = New InternetExplorer
    Dim yearSelection As String
    yearSelection = "2018-2019"
    With ie
        .Visible = True
        .Navigate2 "https://www.nseindia.com/products/content/derivatives/currency/cd_historical_businessGrowth.htm"

        While .Busy Or .readyState < 4: DoEvents: Wend
        t = Timer
        Do
            On Error Resume Next
            Set ele = .document.querySelector("[onclick*='" & yearSelection & "']")
            On Error GoTo 0
            If Timer - t > MAX_WAIT_SEC Then Exit Do
        Loop While ele Is Nothing
        If Not ele Is Nothing Then
            ele.Click
            While .Busy Or .readyState < 4: DoEvents: Wend
        End If
        'other code
        Stop                                     '<==Delete me later
        .Quit
    End With
End Sub
0 голосов
/ 24 января 2019

Это работает:

 document.querySelector('a[onclick="loadYearPage(\'2018-2019\')"]')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...