Почему Watir не находит тег сценария по атрибуту src - PullRequest
0 голосов
/ 03 октября 2018

Перейдя на любую страницу, я могу просмотреть скрипты, представленные в Watir:

b = Watir::Browser.new
b.goto "https://macys.com"
b.scripts.collect(&:src)
# => [ ..., "https://mathid.mathtag.com/d/i.js", ...]

В результате получается большой массив скриптов, я выбрал один наугад, чтобы найти:

b.script(src: "https://mathid.mathtag.com/d/i.js").html
# => Watir::Exception::UnknownObjectException: timed out after 30 seconds, waiting for #<Watir::HTMLElement: located: false; {:xpath=>"//script[@src='https://mathid.mathtag.com/d/i.js']"}> to be located; Maybe look in an iframe?
# ...

Но он никогда не находит сценарий таким образом.Зачем?Как я могу обнаружить присутствие, не исследуя scripts.collect(&:src)?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Watir находит элемент на основе строки, совпадающей с тем, что присутствует в DOM.Если вы исследуете DOM, вы увидите, что https: отсутствует, просто //mathid.mathtag.com/d/i.js.Драйвер браузера переводит это, когда запрашивается значение атрибута, чтобы включить https, но Watir не может предположить, что при определении местоположения.

Это будет работать:

browser.script(src: '//mathid.mathtag.com/d/i.js')
0 голосов
/ 03 октября 2018

Это потому, что ссылка, которую вы пытаетесь найти, не имеет https:, Элемент, который вы пытаетесь найти, это,

<script type="text/javascript" async="" src="//mathid.mathtag.com/d/i.js"/>

Итак, напишите этот код, он будет работать.

p b.script(src: "//mathid.mathtag.com/d/i.js").html
...