Как найти элемент Name = "Пароль" для изменения значения моего текущего пароля - PullRequest
0 голосов
/ 27 мая 2020
from selenium import webdriver
from selenium.webdriver.common.by import *
from selenium.webdriver.support.ui import *
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import time
from lib2to3.pgen2 import driver

usernameStr = '@email.com'
passwordStr = '*******'

browser = webdriver.Chrome()
browser.get('https://ebill.nationalfuelgas.com/cgi/natfuel-bin/vortex.cgi')
browser.maximize_window()

# fill in username and hit the next button

time.sleep(3)
browser = browser.find_element_by_name("login")
browser.send_keys(usernameStr)
browser.send_keys(Keys.TAB, Keys.TAB)
time.sleep(5)

# Wait for transition then continue to fill items

Я пытаюсь разобраться в этом коде, пожалуйста, помогите

password = WebDriverWait(browser, 10).until(
        EC.presence_of_element_located((By.NAME, "password")))
password.send_keys(passwordStr)
time.sleep(1)

Я попытался указать имя тега, имя и т. Д. c и все еще мало что делает, все остальные коды работают, кроме этот.

# This code is to login the website
slogin = browser.find_element_by_name("continue" + Keys.ENTER)

Снимок:

View Source

1 Ответ

1 голос
/ 27 мая 2020

Чтобы отправить последовательность символов в поле Email и Пароль , используя Selenium , вам необходимо вызвать WebDriverWait для element_to_be_clickable(), и вы можете использовать любую из следующих Стратегий локатора :

  • Использование CSS_SELECTOR:

    driver.get("https://ebill.nationalfuelgas.com/cgi/natfuel-bin/vortex.cgi")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.inputfield[alt='Email']"))).send_keys("shadownet96")
    driver.find_element_by_css_selector("input.inputfield[alt='Password']").send_keys("shadownet96")
    
  • Использование XPATH:

    driver.get("https://ebill.nationalfuelgas.com/cgi/natfuel-bin/vortex.cgi")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='inputfield' and @alt='Email']"))).send_keys("shadownet96")
    driver.find_element_by_xpath("//input[@class='inputfield' and @alt='Password']").send_keys("shadownet96")
    
  • Примечание : вам необходимо добавить следующие импорты:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • Снимок браузера:

ebil

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