Как мне заполнить HTML-форму, используя селен? - PullRequest
0 голосов
/ 21 апреля 2019

url = http://ptvtelecom.com/ Если вы последуете за URL-адресом и нажмете кнопку с надписью «combrobar», которая должна быть видна в середине экрана, вы попадете в форму, которую необходимо заполнить. Мне было интересно, как заполнить форму, используя селен.

Итак, я уже пытался найти элемент по id и по имени, но он не работает. Любая помощь в том, как найти элемент первого текстового поля, например, будет очень полезна.

option = webdriver.ChromeOptions()
option.add_argument(" — incognito")
browser = 
webdriver.Chrome(executable_path='/Users/grsanchez/downloads/chromedriverM', 
options=option)
browser.get('http://ptvtelecom.com/')
browser.find_element_by_xpath('//* 
[@id="cobertura"]/div/div[2]/div/div/p/a').click()

Вот где все идет не так

name = browser.find_element_by_id('nombre')
name.send_keys('user1')

Ответы [ 2 ]

3 голосов
/ 21 апреля 2019

Прочитайте комментарии в коде, чтобы понять, почему ваш код не работает.
В основном вы пытаетесь выбрать что-то, что существует внутри iframe.

option = webdriver.ChromeOptions()
option.add_argument("--incognito")

browser = webdriver.Chrome(executable_path='/Users/grsanchez/downloads/chromedriverM', 
options=option)

browser.get('http://ptvtelecom.com/')

## finding the button that shows the form
btn = browser.find_element_by_css_selector('#cobertura .boton-cobertura')

## using js to click it, to avoid getting issues in case the button wasn't visible
driver.execute_script("arguments[0].click();", btn)

## the element you want to select is actually inside an iframe, so we need to switch to it, if we want to select anything
driver.switch_to.frame(driver.find_element_by_css_selector('#popmake-1432 iframe'));

## selecting the name input and sending a string
name = driver.find_element_by_css_selector('#nombre')
name.send_keys('user1')

PS Чтобы вернуться к основному кадру, вы можете сделать это:

driver.switch_to.default_content()
0 голосов
/ 21 апреля 2019

вам нужно переключиться на iframe что-то вроде driver.switchTo (). Frame ("a077aa5e");

тогда используйте ваши локаторы внутри iframe

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