Я не могу нажать на 5 звезд в Google Maps

1
6

Я пишу инструмент для автоматической оценки в Google Maps. Мне удалось перенести его на вкладку оценки, но я не могу поставить там 5 звезд и нажать кнопку отправки. Возникла проблема с постановкой 5 звезд.

Вот мой блок codeа:

Когда я проверил страницу, я заметил, что при нажатии на раздел комментариев открылся iframe, и я действовал соответствующим образом, но у меня ничего не получилось.

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager
import os
import time

def google_maps_comment_with_existing_profile(comment_text):
    # Kullanıcı verileri ve profil yolu
    user_data_dir = os.path.expanduser('~') + "\\AppData\\Local\\Google\\Chrome\\User Data"
    profile = "Profile 1"  # veya "Profile 1", "Profile 2" gibi

    # Chrome seçeneklerini ayarlama
    chrome_options = Options()
    chrome_options.add_argument(f"user-data-dir={user_data_dir}")
    chrome_options.add_argument(f"profile-directory={profile}")
    chrome_options.add_argument("--start-maximized")
    
    # Chrome'u başlatma
    service = Service(ChromeDriverManager().install())
    browser = webdriver.Chrome(service=service, options=chrome_options)
    
    try:
        # Google Maps'te mekana git
        browser.get("https://www.google.com/maps/place/Aspava+D%C3%BCr%C3%BCm+D%C3%B6ner/@37.0739082,37.3154215,13.75z/data=!4m6!3m5!1s0x1531e1a012adbbd3:0xb0211d1d7239889d!8m2!3d37.072678!4d37.3392742!16s%2Fg%2F1tgldpqs?entry=ttu")
        time.sleep(5)
        
        # Yorumlar sekmesine tıkla
        reviews_tab = WebDriverWait(browser, 10).until(
            EC.element_to_be_clickable((By.XPATH, '//button[contains(., "Yorumlar")]'))
        )
        reviews_tab.click()
        time.sleep(3)
        
        # Yorum yaz butonunu bul ve tıkla
        write_review_button = WebDriverWait(browser, 10).until(
            EC.element_to_be_clickable((By.XPATH, '//button[contains(., "Yorum yaz")]'))
        )
        write_review_button.click()
        
        # iframe'e geçiş yap
        iframe = WebDriverWait(browser, 10).until(
            EC.presence_of_element_located((By.XPATH, '//iframe[@name="goog-reviews-write-widget"]'))
        )
        browser.switch_to.frame(iframe)
        
        # Yıldız derecelendirmesi ve yorum yazma alanının görünür olmasını bekle
        star_xpath = '//div[@aria-label="Puanlama yıldızları"]//div[@aria-label="Beş yıldız"]'
        comment_box_xpath = '//textarea[@aria-label="Yorumunuzu yazın"]'

        # Derecelendirme yıldızları ve yorum yazma alanının görünür olmasını bekle
        WebDriverWait(browser, 10).until(
            EC.visibility_of_element_located((By.XPATH, star_xpath))
        )
        WebDriverWait(browser, 10).until(
            EC.visibility_of_element_located((By.XPATH, comment_box_xpath))
        )
        
        # Beş yıldız derecelendirmesine tıklama
        star_rating = WebDriverWait(browser, 10).until(
            EC.element_to_be_clickable((By.XPATH, star_xpath))
        )
        browser.execute_script("arguments[0].click();", star_rating)
        print("Beş yıldız derecelendirmesine tıklandı.")
        
        # Yorum alanına yorum yaz
        comment_box = WebDriverWait(browser, 10).until(
            EC.presence_of_element_located((By.XPATH, comment_box_xpath))
        )
        comment_box.send_keys(comment_text)
        time.sleep(2)

        # Yorum gönder
        post_button = WebDriverWait(browser, 10).until(
            EC.element_to_be_clickable((By.XPATH, '//button[@data-action-type="post"]'))
        )
        post_button.click()
        time.sleep(5)

        print("Yorum başarıyla gönderildi.")
        
    except Exception as e:
        print(f"Yorum gönderme sırasında hata: {e}")

    finally:
        # Tarayıcıyı kapatmadan önce kullanıcıdan onay al
        input("İşlem tamamlandı. Tarayıcıyı kapatmak için Enter'a basın...")
        browser.quit()

# Gönderilecek yorum
comment = "Harika bir yer, kesinlikle tavsiye ederim!"

# Yorumları gönder
google_maps_comment_with_existing_profile(comment)
Варвара
Вопрос задан3 мая 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.