【问题标题】:How to access popup form with Selenium in Python如何在 Python 中使用 Selenium 访问弹出表单
【发布时间】:2016-04-21 17:15:40
【问题描述】:

一直在尝试弄清楚如何使用 selenium python 处理弹出表单。

点击后有一个元素“添加”,它会打开一个新的弹出窗口,我必须在其中输入值。找不到要插入值的元素。 没有使用 iframe。

弹出窗口的 HTML 代码如下所示:

<div id="form-1322" class="xyz" >
 <div id="form-1322-body" class="xyz1" >
  <span id="outerCt" role="presentation"">
   <div id="innerCt"role="presentation"">
    <table id="ext-comp-1317" class="xyz2" >
     <tbody>
      <td id="body1" class="xyz4">
       <input id="body2" class="xyz5" name="abc">

需要在 -> name="abc" 中插入值但无法定位元素。

使用的代码:

Name=driver.find_element_by_xpath('//input[@id="body2"][@class="xyz5"][@name="abc"]')
Name.send_keys("login")

【问题讨论】:

  • 我不认为这是你真正的问题。但是您的 xpath @class="xxyz5' 中有一个 x 很多。无论如何,通过 id 选择应该就足够了。也许您需要添加延迟以等待弹出窗口被添加,然后再尝试获取输入元素。
  • 一个额外的“x”是这里的输入错误。添加延迟后也无法定位元素。

标签: python selenium xpath


【解决方案1】:

您的问题可能是硒“太快”并且在元素出现在页面上之前正在寻找它。尝试使用 WebDriverWait

from selenium.webdriver.support.ui import WebDriverWait
element = WebDriverWait(driver, 10).until(
        lambda driver : driver.find_element_by_xpath('//input[@id="body2"][@class="xxyz5"][@name="abc"]')
element.send_keys('login")

【讨论】:

  • getting.....raise TimeoutException(message, screen, stacktrace)....使用此代码后。
猜你喜欢
  • 2015-06-13
  • 1970-01-01
  • 1970-01-01
  • 2020-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多