JavaScript использует значения двойной точности с плавающей запятой, то есть полную точность 53 бит, но вам нужно
ceil(lb 714341252076979033) = 60
битов, чтобы точно представить это значение.
Ближайшая точно представимая число 714341252076979072
(записать исходный номер в двоичном формате, заменить последние 7 цифр на 0
и округлить, потому что наивысшая замещенная цифра была 1
).
Вы получите 714341252076979100
вместо этого числа, поскольку ToString()
, как описано ECMA-262, §9.8.1 работает с полномочиями в десять и по 53-битной точности, все эти числа равны.
Эти выражения все выбирают разные узлы:
.//* [@ id = 'Passwd']
The. в начале означает, что текущая обработка начинается с текущего узла . «*» Выбирает все узлы узлов, спускающиеся с этого текущего узла, с
@id
-значением-значением, равным «Passwd».Что делать, если мы не используем точку в начале, что она обозначает?
Затем вы выберете все узлы элементов с помощью
@id
- значение атрибута равно «Passwd» в документе whole .Просто добавьте // * в XPath - это выделяет --- различные элементы страницы
Это выберет все узлы элемента в документе whole .
Ниже упомянуто: Поле XPatht для Gmail Password истинно, что имеет значение of *?
.//*[@id='Passwd']
Это позволит выбрать все узлы узлов, спускающиеся с текущего узла, значение
@id
-attribute равно «Passwd».// child :: input [@ type = 'password']
Это выберет все дочерние элементы с именем
input
, которые@type
-трибуты-значения равны на «пароль». Префикс осиchild::
может быть опущен, поскольку это поведение по умолчанию.Синтаксис выбора соответствующего выражения объясняется здесь здесь, на w3school.com .
И оси (текущая точка в обработке) объясняются здесь на другой странице w3school.com .
Точка в XPath называется «выражение контекстного элемента» . Если вы положите точку в начале выражения, это сделает ее контекстной. Другими словами, он будет искать элемент с id="Passwd"
в контексте узла, на который вы вызываете метод «find element by XPath».
*
в .//*[@id='Passwd']
помогает для соответствия любого элемента с id='Passwd'
.
Здесь есть несколько различных ключевых понятий XPath ...
Абсолютный и относительный XPaths (/
vs .
)
/
вводит абсолютный путь местоположения, начиная с корня документа. .
вводит относительный путь местоположения, начиная с контекстного узла. Именованный элемент vs любого элемента (ename
vs *
)
/ename
выбирает корневой элемент ename
./ename
выбирает все дочерние элементы ename
текущий узел. /*
выбирает корневой элемент независимо от имени. ./*
или *
выбирает все дочерние элементы контекстного узла независимо от имени. ось потомка-самца (//*
)
//ename
выбирает все элементы ename
в документе. .//ename
выбирает все элементы ename
на узле контекста или ниже него. //*
выбирает все элементы документа независимо от имени. .//*
выбирает все элементы, независимо от имени, на узле контекста или ниже. С учетом этих понятий, вот ответы на ваши конкретные вопросы ...
.//*[@id='Passwd']
означает выбор всех элементов на или ниже текущего контекстного узла, у которого значение атрибута id
равно 'Passwd'
. //child::input[@type='password']
может быть упрощено до //input[@type='password']
и означает, чтобы выбрать все input
в документе, значение атрибута type
равно 'password'
. Надеюсь, что это поможет:)