首页 > 解决方案 > 如果在 while 循环和 for 循环中按下按钮,则发送 elem.click()

问题描述

import pyautogui as py
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import keyboard
driver = webdriver.Chrome()
driver.get('https://www.youtube.com/watch?v=pcel9QTPx_g&list=RDpcel9QTPx_g&start_radio=1&t=11&ab_channel=%E5%BE%AE%E7%B3%96%E9%80%A2')
elem = driver.find_elements_by_id('video-title')
while True:
    if keyboard.is_pressed('`'):
        driver.find_element_by_xpath('//*[@id="movie_player"]/div[29]/div[2]/div[1]/button'.click()
    for x in elem:
        elem.click()
        keyboard.wait('f4)

所以我正在尝试使用 python 自动迭代 selenium 中的一堆歌曲播放列表。我正在尝试编写代码,所以当我按下`时,视频将暂停,如果我按下 f4,代码将跳到下一次迭代。f4 函数工作得很好,但 while 循环内的代码却不行。是因为当代码运行时,当它进入 for 循环时,它就无法再访问 while 循环了?如果你们有任何想法或想简化我的代码,请随时回答!

标签: pythonseleniumautomationselenium-chromedriver

解决方案


import pyautogui as py
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import keyboard
driver = webdriver.Chrome()
driver.get('https://www.youtube.com/watch?v=pcel9QTPx_g&list=RDpcel9QTPx_g&start_radio=1&t=11&ab_channel=%E5%BE%AE%E7%B3%96%E9%80%A2')
elem = driver.find_elements_by_id('video-title')
for x in elem:
    x.click()
    while True:
        if keyboard.is_pressed('f12'):
            driver.find_element_by_xpath('//*[@id="movie_player"]/div[29]/div[2]/div[1]/button').click()
            keyboard.wait('f12')
            driver.find_element_by_xpath('//*[@id="movie_player"]/div[29]/div[2]/div[1]/button').click()
        if keyboard.is_pressed('f4'):
            break
    keyboard.wait('f4')

推荐阅读