在<iframe>中使用Selenium执行脚本不起作用,但是在Console中执行时可以

时间:2019-02-13 15:31:25

标签: python-3.x selenium-webdriver selenium-chromedriver selenium-edgedriver

我正在使用Selenium自动化服务,并且我需要访问的网站使用iframes标签,并且需要更改此标签中某些元素的值。

我使用的是Edge WebDriver,但我改用Chrome,因为我认为它可以解决问题,但是不幸的是,它没有解决问题,因此我认为它与Driver没有任何关系,但是我如果可能的话,宁愿使用Chrome。

这是模拟脚本的行:

  gc.execute_script(“”“ document.evaluate('// * [@ id =” QRYSELECT_WRK_QRYSEARCHTEXT254“]',document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue.setAttribute('value', 'foo')“”“)
 

这给我带来了一个有关空指针的例外,但基本上,这是说浏览器找不到此元素,因此也无法更改其值。

具有讽刺意味的是,当我打开控制台并编写以下命令时(与上面的脚本相同):

  document.evaluate('// * [@ id =“ QRYSELECT_WRK_QRYSEARCHTEXT254”]',document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue.setAttribute('value','foo')
 

有效。

这是我从gc调用execute_script时对错误的追溯:

  Traceback(最近一次通话结束):
  <模块>中第1行的文件“ ”
    gc.execute_script(“”“ document.evaluate('// * [@ id =” QRYSELECT_WRK_QRYSEARCHTEXT254“]',document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue.setAttribute('value','CEL_ADMITIDOS')”“” ”)
  文件“ C:\ Program Files \ Python36 \ lib \ site-packages \ selenium \ webdriver \ support \ event_firing_webdriver.py”,行88,在execute_script中
    返回self._dispatch(“ execute_script”,(脚本,self._driver),“ execute_script”,unwrapped_args)
  _dispatch中的第160行,文件“ C:\ Program Files \ Python36 \ lib \ site-packages \ selenium \ webdriver \ support \ event_firing_webdriver.py”
    提高e
  _dispatch中的文件“ C:\ Program Files \ Python36 \ lib \ site-packages \ selenium \ webdriver \ support \ event_firing_webdriver.py”,第157行
    结果= getattr(self._driver,d_call)(* d_args)
  文件“ C:\ Program Files \ Python36 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py”,行636,在execute_script中
    'args':convert_args})['value']
  执行中的文件“ C:\ Program Files \ Python36 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py”,第321行
    self.error_handler.check_response(响应)
  文件“ C:\ Program Files \ Python36 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py”,第242行,在check_response中
    引发exception_class(消息,屏幕,堆栈跟踪)
selenium.common.exceptions.WebDriverException:消息:未知错误:无法读取null的属性“ setAttribute”
  (会议信息:chrome = 71.0.3578.98)
  (驱动程序信息:chromedriver = 71.0.3578.137(86ee722808adfe9e3c92e6e8ea746ade08423c7e),platform = Windows NT 10.0.17134 x86_64)
 

所以我想这可能与权限有关...?但是我不知道,在同一个脚本中获得两个不同的结果是很奇怪的,不是吗?

谢谢!

0 个答案:

没有答案