使用Selenium的Python:无法找到元素错误

时间:2017-07-19 20:54:12

标签: python html python-3.x selenium

我正在尝试填充文本框,但我无法找到元素。

我试过找到元素

  • 按班级
  • 按名称
  • 等待10秒等待

但我仍然遇到同样的错误。

这是HTML

    <div class="innerWrap">
    <textarea aria-autocomplete="list" aria-controls="typeahead_list_u_0_j"
    aria-expanded="false" aria-haspopup="true" aria-label=
    "Write a birthday wish on his Timeline..." class=
    "enter_submit uiTextareaNoResize uiTextareaAutogrow uiStreamInlineTextarea inlineReplyTextArea mentionsTextarea textInput"
    cols="48" id="u_0_k" name="message_text" placeholder=
    "Write a birthday wish on his Timeline..." role="textbox" title=
    "Write a birthday wish on his Timeline..."></textarea>
</div>

我的代码:

textbox =  driver.find_element_by_name('message_text')
textbox.send_keys('Happy Birthday! ')

我正在处理的网页是Facebook Birthdays page

2 个答案:

答案 0 :(得分:3)

此问题之前已得到解答,但答案指向的文档链接已过时,因此这里是新更新的"switch to"/switch commands selenium docs链接

您需要使用此命令切换驱动程序,使其在正确的窗口/框架/等中运行。

通过运行检查哪些窗口是打开的:首先运行driver.getWindowHandles();以返回一组所有窗口

然后使用driver.switchTo().window(handle);} #if switching to another window

driver.switchTo().frame("yourframename");} #if switching to a frame

driver.switchTo().alert(); #if switching to a popup

希望这有帮助

A similar question

答案 1 :(得分:2)

所以我终于能够通过查看页面源找到该元素并修复上述错误。

print(driver.page_source)

页面来源显示元素名称为message而非message_text。但是,浏览器中的inspect元素仍会显示message_text