Я пытаюсь нажать на кнопку Load More, расположенную внизу левого окна этой веб-страницы , используя vba в сочетании с селеном но скрипт всегда выдает ошибку тайм-аута, указывая на эту строку .Get Url. Хотя кажется, что я определил точный xpath для определения местоположения элемента, я не могу думать дальше о том, что мне следует делать сейчас, чтобы добиться того же.
Load More
.Get Url
Как я могу нажать на эту кнопку 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
По крайней мере, для меня было несколько баннеров, которые нужно отклонить, а также прокрутить. С 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
Я вижу две кнопки «Загрузить еще». Оба соответствуют "//div[contains(.,'Load More')]". Первый скрыт. Вам нужно справиться со вторым.
"//div[contains(.,'Load More')]"
Попробуйте этот XPath
"//div[@class='content' and . = 'Load More']"