Проблема, нажимающая на кнопку загрузки больше, используя vba - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь нажать на кнопку Load More, расположенную внизу левого окна этой веб-страницы , используя vba в сочетании с селеном но скрипт всегда выдает ошибку тайм-аута, указывая на эту строку .Get Url. Хотя кажется, что я определил точный xpath для определения местоположения элемента, я не могу думать дальше о том, что мне следует делать сейчас, чтобы добиться того же.

Как я могу нажать на эту кнопку Load More?

Sub ClickOnLoadMore()
    Const Url$ = "http://www.ratemyprofessors.com/search.jsp?queryoption=TEACHER&queryBy=schoolDetails&schoolID=457&schoolName=James+Madison+University&dept=select"
    Dim driver As New ChromeDriver, post As Object

    With driver
        .Get Url
        Set post = .FindElementByXPath("//div[contains(.,'Load More')]")
        .ExecuteScript "arguments[0].scrollIntoView();", post
        post.Click
    End With
End Sub

Ответы [ 2 ]

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

По крайней мере, для меня было несколько баннеров, которые нужно отклонить, а также прокрутить. С get get не было проблем

Option Explicit

Public Sub ClickOnLoadMore()
    Const Url$ = "http://www.ratemyprofessors.com/search.jsp?queryoption=TEACHER&queryBy=schoolDetails&schoolID=457&schoolName=James+Madison+University&dept=select"
    Dim driver As New ChromeDriver, post As Object

    With driver
        .get Url
        If .FindElementsByCss(".close-notice.close-this").Count > 0 Then
            .FindElementByCss(".close-notice.close-this").Click
        End If
        .SwitchToFrame .FindElementByCss("[id^='spout-unit-iframe']")
        With .FindElementByCss("#spout-ads #spout-header-close")
            .ScrollIntoView
            .Click
        End With

        .SwitchToDefaultContent
        .ExecuteScript "document.querySelector('.result-list [onclick*=LoadMore]').scrollIntoView(true);" & _
                       "window.scrollBy(0, -(window.innerHeight - this.clientHeight) / 2);"

        .FindElementByCss(".result-list [onclick*=LoadMore]").Click
         Stop '<== Delete me later
        'other code
        .Quit
    End With
End Sub
0 голосов
/ 06 января 2019

Я вижу две кнопки «Загрузить еще». Оба соответствуют "//div[contains(.,'Load More')]". Первый скрыт. Вам нужно справиться со вторым.

Попробуйте этот XPath

"//div[@class='content' and . = 'Load More']"
...