Как я могу отправить ключи на скрытый ящик для пароля - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь зайти на сайт www.bet365.com

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

Как я могу отправить пароль в ящик для автоматизации входа в систему?

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

При попытке перейти к скрытому элементу пароль не отправляется.

Я также пытался щелкнуть видимый элемент перед отправкой, но это также не сработало.

wait=WebDriverWait(driver,3)
userele=wait.until(expected_conditions.element_to_be_clickable((By.CSS_SELECTOR,'div.hm-Login_UserNameWrapper 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()

Вот основной код для элементов на странице bet365

<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>

В настоящее время работает только передача имени пользователя.

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Вы должны избегать вызова send_keys() в скрытое поле пароля всеми возможными способами. Однако достаточно будет WebDriverWait для первого элемента на странице, с которой вы хотите взаимодействовать, и вам не нужно вызывать WebDriverWait несколько раз при взаимодействии с <input> элементами. Вы можете попробовать любую из следующих стратегий локатора :

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

    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.hm-Login_UserNameWrapper>input.hm-Login_InputField[type='text']"))).send_keys('xyz@gmail.com')
    driver.find_element_by_css_selector("div.hm-Login_PasswordWrapper>input.hm-Login_InputField:not(.Hidden)").send_keys("hello")
    
  • Использование XPATH:

    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='hm-Login_UserNameWrapper ']/input[@class='hm-Login_InputField ' and @type='text']"))).send_keys('xyz@gmail.com')
    driver.find_element_by_xpath("//div[@class='hm-Login_PasswordWrapper ']/input[contains(@class, 'hm-Login_InputField') and not(@class='Hidden')]").send_keys("Jp1875")
    
  • Примечание : Вы должны добавить следующий импорт:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
0 голосов
/ 23 апреля 2019

Ну, вы можете отправить пароль в виде видимого ввода следующим образом:

Код:

driver = webdriver.Chrome(executable_path = r'chromedriverPath')
wait = WebDriverWait(driver,10)

driver.maximize_window()

driver.get("https://www.bet365.com/#/HO/")

wait = WebDriverWait(driver, 10)

wait.until(EC.element_to_be_clickable((By.XPATH,"//div[@title='New Customer Bonus']"))).click()

userele = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.hm-Login_UserNameWrapper input.hm-Login_InputField[type='text']")))
userele.send_keys('xyz@gmail.com')

passwdele = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.hm-Login_PasswordWrapper input.hm-Login_InputField[type='text']")))
passwdele.send_keys('xxxxxxxxxxx')

btnelement = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'div.hm-Login_PasswordWrapper button.hm-Login_LoginBtn')))

btnelement.click()  

Импорт будет:

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

Дайте мне знать, если у вас возникнут какие-либо проблемы.

...