Найти элементы по типу ввода - PullRequest
0 голосов
/ 15 мая 2019

Я пробую Python и Selenium.Моя цель - войти в Discord (https://discordapp.com/login.. Но вот проблема. Мне не удается выбрать ящик электронной почты и пароль. Но худшая часть - это попытка выбрать текстовое поле на сервере ..Я перепробовал все, даже обнаружение с помощью XPath, но я не могу сделать это правильно. Кроме того, выполнение этого на ATOM, вероятно, не лучшая идея, так как я не получаю никаких сообщений об ошибках: P. Вот фрагмент кодавыберите текстовое поле электронной почты.

from selenium
import webdriver
from selenium.webdriver.common.keys
import Keys

browser = webdriver.Firefox()

browser.get('https://discordapp.com/login')
assert 'discordapp' in browser.title

elem = browser.find_element_by_name('textarea')# this is the part where i need help
elem.send_keys('test' + Keys.ENTER)

The Sourcecode

Ответы [ 2 ]

4 голосов
/ 15 мая 2019

Для электронной почты этот селектор css должен работать:

input[type='email']

Для пароля:

input[type='password']

Я проверял этот код:

browser.get("https://discordapp.com/login")


elem = browser.find_element_by_css_selector("input[type='email']")# this is the part where i need help
elem.send_keys("itsolidude@imail.com")

elem1 = browser.find_element_by_css_selector("input[type='password']")# this is the part where i need help
elem1.send_keys("password")    

login_button = browser.find_element_by_xpath("//div[text()='Login']/parent::button")
login_button.click() 

Это сработало на моей машине.

0 голосов
/ 15 мая 2019

вам нужно проверить контейнер div и добавить их в xpath.

Попробуйте следующий код и, пожалуйста, отладьте отступы на случай, если stackoverflow не передает их должным образом (ну, я не знаю, как сделать это красиво и правильно.)

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

class loginPage():

    def test(self):
    baseUrl = 'https://discordapp.com/login'
    driver = webdriver.Firefox(executable_path="G:\\webdriver/geckodriver.exe")
    driver.maximize_window()
    driver.implicitly_wait(5)
    driver.get(baseUrl)

    mail = driver.find_element(By.XPATH, "//div[3]/div[1]/div/input[contains(@type,'email')]")
    time.sleep(5)
    mail.send_keys("test@gmail.com")
    time.sleep(3)
    print("Enter mail adress")

    password = driver.find_element(By.XPATH, "//div[3]/div[2]/div/input[contains(@type,'password')]")
    time.sleep(5)
    password.send_keys("123456789")
    time.sleep(3)
    print("Enter password")
    time.sleep(10)
    driver.quit()

ff = loginPage()
ff.test()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...