我只做非常基本的事情,但结果也是假的: console.log(“检查元素”+(ElementFinder的元素(txt_LoginUsername)实例));
检查元素false
但如果我使用webstorm的调试工具,它会给出正确的结果。
我只是在得到答案后更新问题
import {browser, ExpectedConditions as EC, $, $$, element, by,protractor,ElementFinder} from 'protractor'
console.log("element find when importing ElementFinder from 'protractor' and use ElementFinder"+(element(Welcome.txt_SelectOrg) instanceof ElementFinder));
console.log("element find when importing protractor from 'protractor' and use protractor.ElementFinder"+(element(Welcome.txt_SelectOrg) instanceof protractor.ElementFinder));
这是结果,所以MirosławZalewski的答案是完全正确的!但仍然有一个问题,ElementFinder和protractor.ElementFinder
之间有什么区别从'量角器'导入ElementFinder时使用元素查找并使用 从中导入量角器时找到ElementFinderfalse元素 '量角器'并使用protractor.ElementFindertrue
答案 0 :(得分:0)
如果没有更多背景信息,我们无法肯定地说,但我认为ElementFinder
不是您认为的那样。
Protractor不会在全局命名空间中公开其内部类。当我尝试运行与您类似的代码时,我收到JavaScript错误:
ReferenceError: ElementFinder is not defined
如果我尝试,它会按预期工作:
element(txt_LoginUsername) instanceof protractor.ElementFinder
如果您没有收到错误,似乎代码中定义了ElementFinder
,但它与protractor.ElementFinder
不同。这可以通过一些不寻常的函数原型来实现,例如下面:
const ElementFinder = () => element('something');
ElementFinder.prototype = protractor.browser;
要验证您的ElementFinder
是否与protractor.ElementFinder
相同,请使用:
ElementFinder === protractor.ElementFinder
要回答你的第二个问题(“ElementFinder和protractor.ElementFinder之间有什么区别”),我们必须深入研究Protractor源代码,看看模块和组件如何相互作用。似乎在某个地方,这些类被实例化(或者可能是命名空间),使它们与JavaScript解释器的观点不同,即使它们具有完全相同的源代码。