【问题标题】:Sending an elem.click() if button pressed in a while loop combined with a for loop如果在 while 循环和 for 循环中按下按钮,则发送 elem.click()
【发布时间】:2020-12-29 17:30:35
【问题描述】:
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 循环了?如果你们有任何想法或想简化我的代码,请随时回答!

【问题讨论】:

  • 我不确定我是否理解这个问题,但elem.click() 这行对我来说似乎是错误的。 elem 是一个列表变量,在 for 循环中不会改变。不应该是x.click()吗?
  • keyboard.wait('f4)? keyboard.wait('f4')?
  • 是的,原来我在 ' 部分犯了一个错误,但不是在我的代码中,只有当我在这里粘贴代码时。 elem.click() 也是错误的,原来我粘贴了错误的代码。我用 for 循环交换了 while 循环,代码可以工作了。

标签: python selenium automation selenium-chromedriver


【解决方案1】:
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')

【讨论】:

    【解决方案2】:

    我还建议你使用另一个键而不是 f12,因为当你从 chrome 运行它时它会破坏你的代码,它会打开开发者模式!

    【讨论】:

      猜你喜欢
      • 2021-12-25
      • 2022-01-25
      • 1970-01-01
      • 2017-04-03
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多