使用xpath方法时会引发错误
终端错误: (即失败:使用定位符找不到元素:By(xpath,input [contains(@id,'usertext')]))
element(by.id("usertext")).sendKeys("help")
(当我以这种方式尝试时,它会完美执行)
var EC = protractor.ExpectedConditions;
describe('test MAYO site', function () {
browser.waitForAngularEnabled(false);
//browser.debugger();
//login cookies
browser.driver.manage().deleteAllCookies();
//login page testing
it('URL', function () {
// get testing project login url
var loginlink = "https://mayo-gbs-stage.orbita.cloud:8443/chatbot/"
browser.get(loginlink);
browser.sleep(6000);
});
it("input", function(){
element(by.xpath("input[contains(@id, 'usertext')]")).sendKeys("help");
browser.sleep(6000);
});
});
我需要使用xpath函数,这样才能在不搜索属性的情况下实现适当的自动化
答案 0 :(得分:1)
您可以在下面的代码段中找到元素!
使用包含:
element(by.xpath("//*[contains(@id,'usertext')]"))
使用等于运算符:
element(by.xpath("//*[@id='usertext']")),
干杯!
答案 1 :(得分:0)
尝试一下。这应该可行。
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
at com.example.android.friendszonev20.ClickPostActivity$1.onDataChange(ClickPostActivity.java:64)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@16.0.5:75)
at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@16.0.5:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@16.0.5:55)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:160)
at android.app.ActivityThread.main(ActivityThread.java:5541)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)
答案 2 :(得分:-1)
出现该错误的原因是因为XPath的格式不正确。你有
input[contains(@id, 'usertext')]
但应该是
//input[contains(@id, 'usertext')]
话虽如此,我不明白为什么人们在不需要时坚持使用XPath。您说by.id("usertext")
很好用……如果是这样,为什么要使用XPath? XPath的性能较低,支持不一致等。您应该始终使用ID(如果可用),其次是CSS选择器(最好的支持和性能),然后,只有当您需要通过包含的文本查找元素或进行DOM导航时,最后的选择是XPath。