Sie könnten so etwas tun:
%Vor% Sie sollten auch einen Blick auf werfen für ein Attribut, das eine bestimmte Zeichenfolge enthält? , um zu sehen, warum die contains()
oben möglicherweise nicht genau mit dem übereinstimmt, was Sie beabsichtigen.
Um beispielsweise genau das zu erreichen, was Sie vorhaben, können Sie Folgendes verwenden:
%Vor% Es ist viel einfacher in XPath 2.0, aber ich bin mir nicht sicher, ob es von qtp unterstützt wird. Wenn Sie concat(' ',@class,' ')
zu einer Variablen machen könnten, könnten Sie auch den XPath bereinigen.
Hier ist ein 2.0-Beispiel für alle Fälle:
%Vor% contains()
ist eine Funktion, die zwei Argumente akzeptiert: contains (A, B) gibt true zurück, wenn B eine Teilzeichenfolge von A ist.
Damit würde Ihre Syntax gültig, wenn Sie Ihr "=" durch "," ersetzen: contains(@class, 'X')
anstelle von contains(@class = 'X')
. Aber ich weiß nicht, ob es dann gegen alle möglichen Eingabedaten das machen würde, was man will - das ist eine andere Frage.
In Ihrer Frage ist die Syntax falsch, wie Michael Kay darauf hingewiesen hat.
Wenn ich Ihre Frage richtig verstanden habe, möchten Sie eine Klasse auswählen, die "xyz ng-binding ng-scope" aber nicht "ng-hide" enthält, auch wenn sie "typeA", "typeB" oder nicht enthält.
Ich würde so etwas verwenden:
%Vor%Ich finde oft, dass die Leerzeichen in dieser Situation ein Problem verursachen. Ich habe Attribute gesehen, die führende und / oder nachstehende Leerzeichen und / oder mehrere aufeinanderfolgende Leerzeichen in der Mitte haben. Die Verwendung von Normalize-Space beseitigt dieses Problem.
Eine andere Sache ist, wenn QTP uns mehrere Übereinstimmungsfehler gibt, können wir diesen Trick verwenden, um zu sehen, ob der XPath funktioniert. Dann mach weiter, um den richtigen zu finden.
%Vor%