失败:使用定位器找不到元素:

时间:2019-02-05 11:01:28

标签: selenium protractor

使用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函数,这样才能在不搜索属性的情况下实现适当的自动化

3 个答案:

答案 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。