Может ли селен автоматически определять текстовое поле на веб-странице и вводить значения? - PullRequest
0 голосов
/ 07 декабря 2018

Я новичок в автоматизации тестирования.Изучая некоторый базовый селен, я знаю, что могу использовать инструменты селена, чтобы заполнить некоторые формы онлайн.Ниже приведен код, который я использую для вашей справки:

elem = self.driver.find_element_by_xpath("//*[@title='Registration']")
elem.click()
iframe = self.driver.find_elements_by_id('frm_reg_load_patient')[0]
self.driver.switch_to.default_content()
self.driver.switch_to.frame(iframe)
elem = self.driver.find_element_by_id("txtPatientLastName")
elem.clear()
elem.send_keys("Peng")
elem = self.driver.find_element_by_id("txtPatientFirstName")
elem.clear()
elem.send_keys("Richard")

А вот снимок экрана в Интернете:

enter image description here

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

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Я нашел ответ сам.Если у кого-то есть такой же вопрос:

//find all input fields where type = text or password and store them In array list 
txtfields.
 List<WebElement> txtfields = driver.findElements(By.xpath("//input[@type='text' or 
 @type='password']"));

//for loop to send text In all text box one by one.
 for(int a=0; a<txtfields.size();a++){   
 txtfields.get(a).sendKeys("Text"+(a+1));  
 }
 Thread.sleep(3000);
0 голосов
/ 07 декабря 2018

Поскольку требуемые элементы находятся в пределах <iframe>, вам необходимо:

  • Induce WebDriverWait , чтобы требуемый кадр был доступен и переключиться на него.
  • Induce WebDriverWait для желаемого элемента, по которому можно кликать .
  • Можно использовать следующее решение:

    WebDriverWait(self.driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"frm_reg_load_patient")))
    WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.ID, "txtPatientLastName"))).send_keys("Peng")
    self.driver.find_element_by_id("txtPatientFirstName").send_keys("Richard")
    
  • Примечание : необходимо добавить следующий импорт:

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

Обновление

Согласно вашему обновлению комментария, ваш скрипт / программа будет более эффективным, заменив неявное ожидание на WebDriverWait , но, честно говоря, нет готового function(), доступного для разверните страницу, чтобы найти любой элемент как таковой и заполнить случайные данные .Написание новой функции wrapper будет лучше отвечать вашим потребностям, но это должно быть вне области для этого вопроса.

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