#python #selenium #selenium-webdriver #selenium-chromedriver
#python #selenium #selenium-webdriver #selenium-chromedriver
Вопрос:
Я пытаюсь передать имя пользователя и пароль на страницу входа в систему, которая имеет структуру из нескольких классов.
Я пробовал различные решения XPATH, но не смог заставить их работать для этого примера. Вот HTML-код сайтов. Если кто-нибудь может помочь, это будет с благодарностью. Спасибо.
<div class="hm-HeaderModule_UserAdmin ">
<div class="hm-Login ">
<div class="hm-Login_UserNameWrapper ">
<input type="text" class="hm-Login_InputField ">
<div class="hm-Login_InputText ">Join Now</div></div>
<div class="hm-Login_PasswordWrapper ">
<input type="text" class="hm-Login_InputField ">
<input type="password" class="hm-Login_InputField Hidden ">
<button tabindex="0" class="hm-Login_LoginBtn ">GO</button>
<div class="hm-Login_InputText ">Lost Login?</div></div></div></div>
Оба текстовых поля для ввода имени пользователя и пароля расположены в hm-Login_InputField
Комментарии:
1. Какой код вы пробовали до сих пор? Какое сообщение об ошибке вы получаете?
Ответ №1:
Попробуйте использовать CSS Selector
, что намного быстрее.Используется WebdriverWait
для обработки элемента.
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium import webdriver
driver=webdriver.Chrome()
driver.get("url here")
wait=WebDriverWait(driver,20)
userele=wait.until(expected_conditions.element_to_be_clickable((By.CSS_SELECTOR,'div.hm-Login_PasswordWrapper input.hm-Login_InputField[type="text"]')))
userele.send_keys('xyz@gmail.com')
passwdele=wait.until(expected_conditions.element_to_be_clickable((By.CSS_SELECTOR,'div.hm-Login_PasswordWrapper input.hm-Login_InputField.Hidden[type="password"]')))
passwdele.send_keys('xxxxxxxxxxx')
btnelement=wait.until(expected_conditions.element_to_be_clickable((By.CSS_SELECTOR,'div.hm-Login_PasswordWrapper button.hm-Login_LoginBtn')))
btnelement.click()
Комментарии:
1. Спасибо за вашу помощь! Я не смог заставить это работать точно для примера, но могу понять предпосылку и сделаю еще одну попытку, спасибо.
2. Спасибо за ваше решение, однако поле пароля не получает команду send_keys из-за оболочки, содержащей текст и скрытое поле пароля в одном и том же поле. Я попытался сначала щелкнуть поле пароля, а затем отправить ключи скрытому элементу, однако по-прежнему ничего не появляется. У вас есть какие-нибудь мысли? Спасибо
Ответ №2:
Пожалуйста, проверьте ниже XPath, используя следующий-sibling
Username (XPath) - //div[@class='class="hm-Login_PasswordWrapper']/following-sibling::input[1]
Password (XPath) - //div[@class='class="hm-Login_PasswordWrapper']/following-sibling::input[2]
Примечание — Пожалуйста, проверьте пространство в конце оболочки <div class="hm-Login_PasswordWrapper ">
Ответ №3:
Во-первых, проверьте, находятся ли поля имени пользователя и пароля внутри фрейма, если они находятся внутри IFrame, переключитесь на него, а затем выполните, это случилось со мной однажды, когда я пропустил часть фреймов, поэтому надеюсь, что это поможет вам 🙂