Мне нужно найти правильную форму входа на веб-странице (она должна работать на разных сайтах, поэтому я не могу просто использовать идентификатор или подобное, потому что, очевидно, может измениться для разных сайтов).
Что я делаю, так это чтобы найти всю форму, а затем попытаться найти ту, в которой всего три элемента (пользователь, пароль и кнопка доступа)
user_field_list = ["username", "email", "user", "prova", "login_email", "session[username_or_email]"]
pass_field_list = ["password","Password", "pass", "login_password", "session[password]"]
button_field_list = ["Accedi", "login", "access", "Avanti"]
for form in browser.find_elements_by_xpath('.//form'):
count=0
find_user=0
find_pass=0
find_button=0
for input_field in form.find_elements_by_xpath('.//input'):
if (input_field.get_attribute("type") not in "hidden"):
count=count+1
if(find_pass == 0):
for passkey in pass_field_list:
if (passkey in input_field.get_attribute("type")):
find_pass = 1
if (find_user==0):
for userkey in user_field_list:
if (userkey in input_field.get_attribute("type")):
find_user=1
if (find_button==0):
if ("submit" in input_field.get_attribute("type")):
find_button=1
С помощью некоторой отладки я убедился, что она нашла правильную форму, но в конце этой части я должен передать ссылку на три поля другой функции, которая должна выполнить вход
def general_login(browser, xpath_user, xpath_pass, xpath_button):
print("general_login")
try:
print("System Log: SEARCH FOR USER FIELD ")
print (str(xpath_user))
username = browser.find_element_by_xpath(xpath_user)
print("System Log: FOUND USER FIELD")
username.send_keys(usernameStr)
print("System Log: SEARCH FOR PASSWORD FIELD")
password = browser.find_element_by_xpath(xpath_pass)
print("System Log: FOUND PASSWORD FIELD")
password.send_keys(passwordStr)
print("System Log: SEARCH FOR BUTTON ACCEDI")
accediButton = browser.find_element_by_xpath(xpath_button)
print("System Log: FOUND BUTTON ACCEDI")
accediButton.click()
return 0
except:
return 1
Проблема в том, что я не знаю, как извлечь три общих xpath из webElements (и у меня нет альтернативной идеи о том, как передать правильные ссылки на функцию).
Кто-то может мне помочь, как получить xpaths или другие возможности, которые я могу использовать? Спасибо!