Python / Selenium Неизвестная ошибка с .click () - PullRequest
0 голосов
/ 28 февраля 2019

Впервые на использовании селена и есть небольшая проблема.Я получаю эту ошибку, когда пытаюсь использовать .click() для элемента.Код выше этого.А вот и мой сайт.https://www.minuteinbox.com/ Спасибо за помощь.Если вам нужна дополнительная информация, просто спросите.

def get_email():
driver = webdriver.Edge('C:/Users/Aurum/Downloads/MicrosoftWebDriver')
driver.get("https://www.minuteinbox.com/")
assert "MinuteInbox" in driver.title
element_email = driver.find_element_by_id('email')
email = element_email.text
assert "No results found." not in driver.page_source
element_delete = driver.find_element_by_class_name('delete-tab')
assert "No results found." not in driver.page_source
element_delete.click()
driver.close()
return email

Ошибка:

Traceback (most recent call last): File "C:\Users\Aurum\Documents\Programing\Prog 1\random stuff\FratThing.py", 
line 69, in main() File "C:\Users\Aurum\Documents\Programing\Prog 1\random stuff\FratThing.py", 
line 64, in main email = get_email() File "C:\Users\Aurum\Documents\Programing\Prog 1\random stuff\FratThing.py", 
line 14, in get_email element_delete.click() File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webelement.py", 
line 80, in click self._execute(Command.CLICK_ELEMENT) File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webelement.py", 
line 633, in _execute return self._parent.execute(command, params) File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", 
line 321, in execute self.error_handler.check_response(response) File "C:\Python37\lib\site-packages\selenium\webdriver\remote\errorhandler.py", 
line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: Unknown error

Редактировать: Итак, я понял, что окно должно быть уменьшено, чтобы оно работало.Если я увеличу его и поменяю класс, чтобы он соответствовал большой кнопке, это не сработает.

Edit2: Github Link https://github.com/WilPermenter/SignUpBot

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

На основании ответа Qharr и вашего вопроса.Возможно, вам следует попытаться использовать селен wait.until()

from selenium import webdriver;
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("URLHERE")

wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.XPATH,"RELEVANT X PATH"))).click()

Возможно, ожидание нажатия следующей кнопки, пока драйвер не найдет ее, может вам помочь.

Если размер экрана влияет на вас,Вы можете попробовать использовать driver.set_window_size(480, 320) после того, как загрузите свой URL с помощью driver.get("URL"). Конечно, вы можете установить размер окна на то, что вам подходит.

0 голосов
/ 28 февраля 2019

Я думаю, что вы можете добиться того же с помощью следующего:

То есть селектор CSS

find_element_by_css_selector(".gradient .delete-tab").click()

Это ограничивает соответствующие элементы одним

В вашем коде:

except:
    element_delete = driver.find_element_by_css_selector('.gradient .delete-tab, .btn-delete')
    element_delete.click()

Это должно означать, что вы можете переместить это в try вместо этого, поскольку оно уже пытается совпасть на двух селекторах.

...