如何使用selenium将文本放入文本域?

时间:2015-06-25 19:27:23

标签: python python-3.x selenium

我使用的是selenium 2.46.0和python 3.4 我想把字符串" Hello,world!"进入文本域以创建新的字母。 我这样做是对的吗?我尝试切换框架并找到正确的元素将文本放入其中。 我的代码:

from selenium import webdriver

browser = webdriver.Firefox()
browser.get('https://mail.ru/')
browser.find_element_by_name('Login').clear()
browser.find_element_by_name('Login').send_keys('selenium90')
browser.find_element_by_name('Password').clear()
browser.find_element_by_name('Password').send_keys('pythonrocks')
browser.find_element_by_id('mailbox__auth__button').click()
browser.find_element_by_css_selector('a.b-toolbar__btn').click()
browser.find_element_by_css_selector('textarea.js-input:nth-child(5)').send_keys('07ufo@mail.ru')

browser.switch_to_frame(browser.find_element_by_id('compose_462_composeEditor_ifr'))
browser.find_element_by_class_name('mceContentBody').send_keys('Hello, world!')

selenium.common.exceptions.NoSuchElement 例外:消息:无法找到元素:{"方法":" id","选择器":" compose_462_composeEditor_ifr"}

我试过了:

iframe = browser.find_elements_by_tag_name('iframe')[frameindex]
browser.switch_to_frame(iframe)
browser.find_element_by_css_selector('body.tinymce').send_keys('hoo')

但它没有帮助

我添加了树的截图: enter image description here

1 个答案:

答案 0 :(得分:2)

该元素的id是动态生成的!尝试类似:

browser.switch_to_frame(browser.find_element_by_xpath('//frame[contains(@id, "composeEditor_ifr")]'))