#python #python-3.x #selenium #selenium-webdriver #selenium-chromedriver
Вопрос:
Привет, я хочу попытаться автоматизировать проверку скорости нажатия с помощью 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:chromedriverschromedriver.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:Usersramhelsinkiprojectsclick_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>
Комментарии:
1. Привет!
.click()
метод returnNone
, в этой строке:button= driver.find_element_by_xpath("//*[@id='clicker']").click()
так что из-за этогоbutton
имеетNone
значение, и когда вы пытаетесь выполнить.click()
в следующий разNone
, он выдает ошибку. В качестве обходного пути используйтеbutton= driver.find_element_by_xpath("//*[@id='clicker']")
и следующую строкуbutton.click()
.2.
driver.execute_script("arguments[0].click();", button)
может быть, еще быстрее и стабильнее.
Ответ №1:
Вы получаете эту ошибку, потому что тег кнопки не найден. попробуйте сделать это
button= driver.find_element_by_ID('clicker')
Ответ №2:
Возможно, кнопка меняется после первого нажатия.
Попробуйте это:
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 секунд игра закончится, и вы не сможете снова нажать на кнопку.
Вы должны проверить, отображается ли кнопка, прежде чем нажимать на нее, как я предложил здесь.
Комментарии:
1. а что, если не поспать?
2. Нужно отладить. Не уверен, что это будет работать правильно. Нужно увидеть лимит отклика сайта. Однако я предполагаю, что сон может быть сокращен.