首页 > 解决方案 > 按钮在while循环中不可点击

问题描述

嗨,我想尝试使用 selenium 自动进行点击速度测试,但出现一些错误主要问题是按钮可以被点击,但在 while 循环中不可点击。

我的代码是这个

import selenium
import os
from tkinter import *
from tkinter import filedialog
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium import webdriver
from selenium import webdriver
import contextlib as textmanager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

from urllib3.packages.six import b
PATH= "C:\chromedrivers\chromedriver.exe"
driver= webdriver.Chrome(PATH)


list_of_words=[]


driver.get("https://clickspeedtest.com/")

time.sleep(2)

driver.find_element_by_xpath("//*[@id='ez-accept-all']").click()

button= driver.find_element_by_xpath("//*[@id='clicker']").click()

k=0

time.sleep(0.5)
while k != 100:
    button.click()
    k=k+1

我得到的错误是这不知道为什么

Traceback (most recent call last):
  File "c:\Users\ramhelsinki\projects\click_text.py", line 36, in <module>
    button.click()
AttributeError: 'NoneType' object has no attribute 'click'

这是按钮或点击区域的源代码

<button id="clicker" type="button" class="rbutton" style="width: 100%; height: 250px; display: none;">Click Here to start playing</button>

标签: pythonpython-3.xseleniumselenium-webdriverselenium-chromedriver

解决方案


第一次单击后按钮可能正在更改。
尝试这个:

button= driver.find_element_by_xpath("//*[@id='clicker']")

while button.is_displayed():
    button.click()
    time.sleep(0.1)
    button= driver.find_element_by_xpath("//*[@id='clicker']")
    k=k+1

另请注意,5 秒后游戏结束,您将无法再次单击该按钮。您必须按照我在此处的建议,在单击按钮之前验证该按钮是否已显示。


推荐阅读