Я получаю две ошибки при запуске кода Selen для классов и ошибок Chrome GUI - PullRequest
1 голос
/ 05 ноября 2019

Я хочу написать автоматический скрипт для входа в твиттер, но он получал 2 ошибки ... Одна из них не смогла найти класс, о котором я упоминал, а другая - ошибка Chrome GUI.

from selenium import webdriver

driver = webdriver.Chrome(r"C:\Users\intel\Desktop\Downloads\abhay@\chromedriver_win32\chromedriver.exe")

driver.get("https://twitter.com/login")

login = driver.find_element_by_class_name("js-username-field email-input js-initial-focus").send_keys("hello")

passw = driver.find_element_by_class_name("js-password-field").send_keys("hello")

btn = driver.find_element_by_class_name("submit EdgeButton EdgeButton--primary EdgeButtom--medium").click()


Я получаю следующие ошибки:

DevTools listening on ws://127.0.0.1:50766/devtools/browser/f3cecbe8-f7a2-431b-a8fe-67f5f52f2f62

[1105/173036.659:ERROR:command_buffer_proxy_impl.cc(124)] ContextResult::kTransientFailure: Failed to send GpuChannelMsg_CreateCommandBuffer.

Traceback (most recent call last):

  File "C:\Users\intel\Desktop\Python\test.py", line 7, in <module>
    login = driver.find_element_by_class_name("js-username-field email-input js-initial-focus").send_keys("hello")

  File "C:\Users\intel\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 564, in find_element_by_class_name
    return self.find_element(by=By.CLASS_NAME, value=name)

  File "C:\Users\intel\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
    'value': value})['value']

  File "C:\Users\intel\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)

  File "C:\Users\intel\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.NoSuchElementException:

    Message: no such element: Unable to locate element:

    {"method":"css selector","selector":".js-username-field email-input js- 
    initial-focus"}
    (Session info: chrome=78.0.3904.87)

1 Ответ

0 голосов
/ 05 ноября 2019

Selenium обрабатывает js-username-field email-input js-initial-focus как строку с одним классом, но это строка с тремя классами. Поэтому используйте js-username-field в качестве имени класса или другие функции для поиска элементов.

Вы можете использовать css_selector с точками в качестве начала каждого класса (и без пробелов)

driver.find_element_by_css_selector(".js-username-field.email-input.js-initial-focus")

driver.find_element_by_css_selector(".submit.EdgeButton.EdgeButton--primary.EdgeButtom--medium")

ИЛИиспользуйте xpath (с пробелами)

driver.find_element_by_xpath('//*[@class="js-username-field email-input js-initial-focus"]')

driver.find_element_by_xpath('//*[@class="submit EdgeButton EdgeButton--primary EdgeButtom--medium"]')

from selenium import webdriver

driver = webdriver.Chrome(r"C:\Users\intel\Desktop\Downloads\abhay@\chromedriver_win32\chromedriver.exe")

driver.get("https://twitter.com/login")

login = driver.find_element_by_css_selector(".js-username-field.email-input.js-initial-focus").send_keys("hello")
#login = driver.find_element_by_xpath('//*[@class="js-username-field email-input js-initial-focus"]').send_keys("hello")


passw = driver.find_element_by_class_name("js-password-field").send_keys("hello")

btn = driver.find_element_by_css_selector(".submit.EdgeButton.EdgeButton--primary.EdgeButtom--medium").click()
#btn = driver.find_element_by_xpath('//*[@class="submit EdgeButton EdgeButton--primary EdgeButtom--medium"]').click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...