我正在使用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)
所以我想这可能与权限有关...?但是我不知道,在同一个脚本中获得两个不同的结果是很奇怪的,不是吗?
谢谢!