Python Selenium-webdriver: нажмите все кнопки полного обзора при загрузке страницы - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь получить информацию (включая отзывы) о приложении из магазина Google Play. Некоторые обзоры короткие, а некоторые длинные и имеют кнопку полного обзора. Когда страница загружается в браузере, я хочу выполнить команду click, чтобы она нажимала на все кнопки обзора обзоров (если есть), а затем начала извлекать информацию со страницы. Вот мой код:

baseurl='https://play.google.com/store/apps/details?id=com.zihua.android.mytracks&hl=en&showAllReviews=true'
driver.get(baseurl)

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='d15Mdf bAhLNe']//div[@class='cQj82c']/button[text()="Full Review"]"))).click()

person_info = driver.find_elements_by_xpath("//div[@class='d15Mdf bAhLNe']")
for person in person_info:
    review_response_person = ''
    response_date = ''
    response_text = ''

    name = person.find_element_by_xpath(".//span[@class='X43Kjb']").text
    review = person.find_element_by_xpath(".//div[@class='UD7Dzf']/span").text

Однако программа выдает следующую ошибку в третьей строке кода (например, WebDriverWait (driver, 10)):

ElementClickInterceptedException: Message: element click intercepted: Element <button class="LkLjZd ScJHi OzU4dc  " jsaction="click:TiglPc" jsname="gxjVle">...</button> is not clickable at point (380, 10). Other element would receive the click: <a href="/store/apps" class="L9ZZW uJjCzb">...</a>

Может ли кто-нибудь указать мне, как чтобы исправить проблему?

1 Ответ

0 голосов
/ 16 июня 2020

Похоже, что полный обзор находится внутри промежутка чуть ниже видимого обрезанного обзора (jsname="fbQN7e"), поэтому вы можете сделать что-то вроде этого

driver.get("https://play.google.com/store/apps/details?id=com.zihua.android.mytracks&hl=en&showAllReviews=true")
reviews = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, "//div[@jsname='fk8dgd']"))
)
for review in reviews.find_elements(By.CSS_SELECTOR, "div[jscontroller='H6eOGe']"):
    reviewText = review.find_element(By.CSS_SELECTOR, "span[jsname='fbQN7e']")
    print(reviewText.get_attribute("innerHTML"))

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...