python - 如果在 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 循环了?如果你们有任何想法或想简化我的代码,请随时回答!
解决方案
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')
推荐阅读
- makefile - 递归 Make 传递不正确的 -j 参数
- powershell - PowerShell SecureBoot 检测脚本
- python - 让 Mypy 对固定/最大长度序列感到满意
- git - 如何从远程分支“someBranch”拉到本地分支“sonOfSomeBranch”?
- sql-server - 将数据类型 varchar 转换为数字时出错。在下面的 sql 查询中
- java - 如何使用java将地图数据列表构建为分层父子关系
- nginx - 无法在 nginx 中读取自签名证书
- javascript - 使用 JavaScript 模拟/调用 .mouseover 事件
- json - 如何在 Flutter 中序列化一个抽象类?
- javascript - CORB:JSFiddle 上的跨域读取阻塞