@ganstar565

Как нажать на кнопку через selenium?

Пишу скрипт на управление музыкой Вконтакте. Всë идëт ровно до момента когда надо включить следующий, предыдущий или поставить на паузу трек. По какой-то причине не удается зацепится за эти кнопки. Кучу времени уже убил, перепробовал множество способов и через классы и через текст(он там есть, но его не видно). Как решить эту проблему?
Пытаюсь зацепиться за этот блок:
65315f6b5517d644805962.png
Но selenium не находит его атрибуты
Есть следующий код:

spoiler
from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager 
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By 
from selenium.webdriver.common.keys import Keys
from time import sleep
from fake_useragent import UserAgent 

class audio_vk():
    def __init__(self):
        
        self.options = webdriver.FirefoxOptions()
        self.options.set_preference("general.useragent.override", " Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0")
        #self.options.add_argument("--headless")

        self.service = Service(executable_patch=GeckoDriverManager().install() )
        self.driver = webdriver.Firefox(service=self.service, options=self.options)
        # почта или номер телефона на который зарегистрирована страница вк
        self.gmail = ""
       #Пароль от аккаунта
        self.password = "" 

        self.a=10
    
    def music_on(self):
        #self.driver.maximize_window()
        self.driver.get("https://vk.com")
        sleep(1)
        index_email = self.driver.find_element(By.ID, "index_email" )
        index_email.send_keys(self.gmail)
        index_email.send_keys(Keys.ENTER)
        sleep(2)
        password_name = self.driver.find_element(By.NAME, "password") 
        password_name.send_keys(self.password)
        password_name.send_keys(Keys.ENTER)
        sleep(self.a)
        music = self.driver.find_element(By.PARTIAL_LINK_TEXT, "Музыка")
        music.click()
        sleep(self.a)
        my_music = self.driver.find_element(By.PARTIAL_LINK_TEXT, "Моя музыка").click()

  
        sleep(self.a)
        self.driver.execute_script("window.scrollBy(0,550)")
        sleep(1)
        random = self.driver.find_element(By.CLASS_NAME, "audio_page__shuffle_all_button").click()
    
    def pause(self):
        pause = self.driver.find_element(""" здесь чтобы я не прописывал - клик не проходит.""").click()

    def next(self):
        next = self.driver.find_element(""" здесь чтобы я не прописывал - клик не проходит.""").click()

    def on_start(self):  
        prev = self.driver.find_element(""" здесь чтобы я не прописывал - клик не проходит.""").click()
    
    def prev():
        prev = self.driver.find_element("""здесь чтобы я не прописывал - клик не проходит.""")
        prev.click()
        sleep(0.8)
        prev.click()


music = audio_vk()
music.music_on()
print("жди 40 сек")
sleep(40)
print("пауза")
music.pause()
print("10 seconds")
sleep(10)
print("след трек")
music.next()
print("через 10 сек включу")
sleep(10)
music.pause()
print("через 40сек с начала")
music.on_start()
print("через 30сек прошлый")
sleep(30)
music.prev()
  • Вопрос задан
  • 231 просмотр
Решения вопроса 1
driver.find_element()
Если мне не изменяет память, то теперь в эту функцию можно передавать два аргумента
Тип селектора и сам селектор.
Попробуй кнопку находить примерно так:
self.driver.find_element('xpath',  "//button[@class='top_audio_player_btn top_audio_player_play _top_audio_player_play']")
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@maksam07
Инжектим скрипт, который все отлично переключает:
$('.top_audio_player_next').click();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 00:29
2000 руб./за проект
01 мая 2024, в 00:20
15000 руб./за проект
30 апр. 2024, в 23:39
5000 руб./за проект