text = driver.find_element(By.XPATH, "(//input[@class='Textinput-Control'])[1]")
javaScript = "document.getElementsByClassName('Textinput-Control')[1].value = 'Нашел' "
driver.execute_script(javaScript)
</>
//div[contains(@class, "qa-NameField")]//input
text = driver.find_element(By.XPATH, '//div[contains(@class, "qa-NameField")]//input')
print('нашел')
text.send_keys('нашел')
WebDriverWait(driver, 20).until(
EC.text_to_be_present_in_element(
(By.XPATH, '//div[contains(@class, "qa-NameField")]//input'),'Complete!'))
WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH,"(//button[@data-test-id='button'])[2]"))).click()
driver.refresh()
time.sleep(10)
# javaScript = "document.getElementsByClassName('Textinput-Control')[1].value = 'Нашел' "
# driver.execute_script(javaScript)
text = driver.find_element(By.XPATH, '//div[contains(@class, "qa-NameField")]//input')
print('нашел')
text.send_keys('нашел')
WebDriverWait(driver, 20).until()
так же, чтобы убедиться что элемент успевает загрузиться. Поверьте, если бы я мог разобраться сам, я бы не пришел к сообществу с просьбой о помощи. Чтение десятков статей на stackoverflow, где все сводится к банальному ID или лоцируемому Xpath а так же просмотр минимум десятка роликов на ютуб где нет даже намека на мою проблему меня честно говоря напрягла. Я понимаю что вероятно упускаю что-то важное, но сам решить эту проблему просто не в состоянии....time.sleep(10)
button = driver.find_element_by_xpath('//button[@data-test-id="button"])[2]')
print('нашли кнопку')
button.click()
print('кликнули по кнопке')
time.sleep(10)
input = driver.find_element_by_xpath('//div[contains(@class, "qa-NameField")]//input')
print('нашли поле ввода')
input.send_keys('нашел')
print('отправили текст в поле ввода')
# Реализуем функции с ожиданием по умолчанию
def my_find(locator, timeout=1, retry=20) -> WebElement:
for i in range(retry):
try:
return WebDriverWait(driver, timeout).until(EC.element_to_be_clickable(locator))
except Exception:
if i == retry - 1:
return driver.find_element(*locator)
def my_click(locator, timeout=1, retry=20):
for i in range(retry):
try:
element = my_find(locator, timeout=timeout)
element.click()
return
except Exception:
if i == retry - 1:
pass
def my_send_keys(locator, keys, timeout=1, retry=20):
elem = my_find(locator, timeout=timeout, retry=retry)
elem.clear()
elem.send_keys(keys)
#Перепишем скрипт с этими функциями
button_locator = (By.XPATH, '//button[@data-test-id="button"])[2]')
my_click(button_locator)
input_locator = (By.XPATH, '//div[contains(@class, "qa-NameField")]//input')
my_send_keys(input_locator, 'нашел')
input_locator = (By.XPATH, '//div[contains(@class, "qa-NameField")]//input')
import os
import time
import pickle
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
os.environ['PATH'] += r"C:/SeleniumDrivers"
driver = webdriver.Chrome()
driver.get("https://telemost.yandex.ru/")
driver.implicitly_wait(5)
try:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@data-test-id='login-button']"))).click()
username_input = driver.find_element(By.ID,'passp-field-login')
username_input.send_keys(input("Введите логин: "))
time.sleep(5)
username_but = driver.find_element(By.ID, 'passp:sign-in').click()
pass_input = driver.find_element(By.ID, 'passp-field-passwd')
pass_input.send_keys(input("Введите пароль: "))
time.sleep(5)
pass_but = driver.find_element(By.ID, 'passp:sign-in').click()
time.sleep(10)
'''cookies input'''
# pickle.dump(driver.get_cookies(), open('cookies', 'wb'))
# time.sleep(10)
'''cookies output'''
# for cookies in pickle.load(open('cookies', 'rb')):
# driver.add_cookie(cookies)
# time.sleep(8)
# driver.refresh()
WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH,"(//button[@data-test-id='button'])[2]"))).click()
driver.refresh()
time.sleep(10)
# javaScript = "document.getElementsByClassName('Textinput-Control')[1].value = 'Нашел' "
# driver.execute_script(javaScript)
text = driver.find_element(By.XPATH, '//div[contains(@class, "qa-NameField")]//input')
print('нашел')
text.send_keys('нашел')
except Exception as error:
print(error)
finally:
driver.close()
driver.quit()
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.remote.webelement import WebElement
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
# Инициализируем webdriver
options = Options()
options.add_argument('--disable-infobars')
options.add_argument('start-maximized')
options.add_argument('--disable-extensions')
driver = webdriver.Chrome(executable_path=ChromeDriverManager().install(), chrome_options=options)
driver.delete_all_cookies()
driver.get('https://telemost.yandex.ru/')
# Реализуем функции с ожиданием по умолчанию
def my_find(locator, timeout=1, retry=20) -> WebElement:
for i in range(retry):
try:
return WebDriverWait(driver, timeout).until(EC.element_to_be_clickable(locator))
except Exception:
if i == retry - 1:
return driver.find_element(*locator)
def my_click(locator, timeout=1, retry=20):
for i in range(retry):
try:
element = my_find(locator, timeout=timeout)
element.click()
return
except Exception:
if i == retry - 1:
pass
def my_send_keys(locator, keys, timeout=1, retry=20):
elem = my_find(locator, timeout=timeout, retry=retry)
elem.clear()
elem.send_keys(keys)
# Сам автотест
login_button_locator = (By.XPATH, '//button[@data-test-id="login-button"]')
my_click(login_button_locator)
login_input_locator = (By.ID, 'passp-field-login')
my_send_keys(login_input_locator, 'ЛОГИН')
continue_button_locator = (By.ID, 'passp:sign-in')
my_click(continue_button_locator)
password_input_locator = (By.ID, 'passp-field-passwd')
my_send_keys(password_input_locator, 'ПАРОЛЬ')
continue_button_locator = (By.ID, 'passp:sign-in')
my_click(continue_button_locator)
planning_button_locator = (By.XPATH, '//button[@data-test-id="button"][2]')
my_click(planning_button_locator)
iframe_locator = (By.TAG_NAME, 'iframe')
iframe = my_find(iframe_locator)
# Входим в контекст Iframe
driver.switch_to.frame(iframe)
input_name_locator = (By.XPATH, '//div[contains(@class, "qa-NameField")]//input')
my_send_keys(input_name_locator, 'нашел')
# Выходим из контекста Iframe на основную страницу
driver.switch_to.default_content()
time.sleep(10)