Селен не может найти элемент - Frame - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь создать скрипт python, используя селен, чтобы заполнить поле поиска на сайте: http://acervo.bndigital.bn.br/sophia/index.html. Мой код:

chromedriver = "./chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
driver.get('http://acervo.bndigital.bn.br/sophia/index.html')
time.sleep(2)
driver.find_element_by_css_selector('#div_rap > table > tbody > tr > td > form > input.input_busca').send_keys('test')

Я уже пытался использовать find_element_by_css_selector и find_element_by_xpath, но это не сработало. Я получил сообщение об ошибке:

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"#div_rap > table > tbody > tr > td > form > input.input_busca"}

Я не знаю, почему это происходит.

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Вы столкнулись с проблемой из-за iframe. вам нужно переключиться на iframe, прежде чем вы начнете вводить текст в поле ввода.

Пожалуйста, обратитесь к решению ниже:

driver.maximize_window()
wait = WebDriverWait(driver, 10)
driver.get("http://acervo.bndigital.bn.br/sophia/index.html")
driver.find_element_by_tag_name('frame').send_keys("Keys.ESCAPE")
driver.switch_to.frame("mainFrame")
inputBox = wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@name='rapida_campo']")))
inputBox.send_keys("your test")

Вывод:

enter image description here

0 голосов
/ 04 апреля 2020

Попробуйте это ..

input_element = driver.find_element_by_xpath("/html/body/div[1]/div[1]/table/tbody/tr/td/form/input[1]")
input_element.send_keys("Enter your value")
input_element.submit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...