使用 ElementFinder 实例时的错误结果
False result when using instance of ElementFinder
我只是做了非常非常基本的事情,但结果也是错误的:
console.log("Check element "+ (元素(txt_LoginUsername) instanceof ElementFinder));
检查元素错误
但是我用webstorm的debug工具,结果是正确的
得到答案后我才更新问题
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ław Zalewski 的回答是完全正确的!不过还是有个疑问,ElementFinder和protractor.ElementFinder
有什么区别
element find when importing ElementFinder from 'protractor' and use
ElementFinderfalse element find when importing protractor from
'protractor' and use protractor.ElementFindertrue
如果没有更多的上下文就不可能肯定地说,但我猜 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
要回答您的第二个问题 ("what is the difference between ElementFinder and protractor.ElementFinder"),您必须深入研究 Protractor 源代码并了解模块和组件如何相互作用。似乎在某个地方,这些 类 被实例化(或者可能命名空间),使它们不同于 JavaScript 解释器的观点,即使它们具有完全相同的源代码。
我只是做了非常非常基本的事情,但结果也是错误的: console.log("Check element "+ (元素(txt_LoginUsername) instanceof ElementFinder));
检查元素错误
但是我用webstorm的debug工具,结果是正确的
得到答案后我才更新问题
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ław Zalewski 的回答是完全正确的!不过还是有个疑问,ElementFinder和protractor.ElementFinder
有什么区别element find when importing ElementFinder from 'protractor' and use ElementFinderfalse element find when importing protractor from 'protractor' and use protractor.ElementFindertrue
如果没有更多的上下文就不可能肯定地说,但我猜 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
要回答您的第二个问题 ("what is the difference between ElementFinder and protractor.ElementFinder"),您必须深入研究 Protractor 源代码并了解模块和组件如何相互作用。似乎在某个地方,这些 类 被实例化(或者可能命名空间),使它们不同于 JavaScript 解释器的观点,即使它们具有完全相同的源代码。