Тег Link не требует закрытия, т. к. является одиночным.
Достаточно того, чтобы конкретный div был закрыт.
require 'selenium-webdriver'
uri = 'data:text/html,<html><div id="foo">bar</div>'
driver = Selenium::WebDriver.for :chrome
driver.get uri
element = driver.find_element :id, 'foo'
# bar
puts element.text
driver.close
Заметь, что в моём примере тег html не закрыт, т. е. HTML является битым, но при этом Selenium отлично справился со своей задачей. DOM при этом не было разрушен.
Проблема еще в том что если смотреть сорс страницы, то этого дива там нету. У меня есть подозрения что он обновляется как-то динамически. Может он не добавляет его в DOM?
Если ты его видишь в браузере — значит в DOM всё попало.
При каких обстоятельствах происходит событие создание SVG я не знаю, зависит от страницы.
Нужно её посмотреть, а пока это не получается сделать.
Selenium дожидается загрузки страницы и выполнения всех JS скриптов на ней, в том числе и AJAX.
К сожалению не могу показать сам проект =( Но насчет DOM верно. Поговорю с разработчиками сего чуда. Wait пробовал, не помогает, просто вылетает по истечению времени. Спасибо за старания
Господа меня только что осенило какой глупый недочет я не замечал. Дело в том что когда я вызывал свой граф, он строился в новой вкладке браузера chrome, а драйвер продолжал искать в предыдущей вкладке. Насколько я знаю selenium не умеет ориентироваться между вкладками. Может вы знаете решение как переключаться между ними?
ДА получилось! просто переключился между вкладками =) В большинстве случаев всегда так, надо смотреть не на глобальные вещи, а на мелкие недочеты…собственно из-за них все и валится ))
Главное, что из-за темы многое подчеркнули. @klysak07 — что можно переключаться между вкладками @sidelnikovmike — что тег link не требует закрытия @tit — что есть ещё люди, которые используют svg вместо canvas @all — что Ruby самый лучший язык.
просто для информации - занимательный факт, может кому пригодится: не знаю как в ruby-версии webdriver, но в java driver.windowHandles имеет тип set, что не гарантирует по 0 индексу (условно обозначим так первый элемент, отданный итератором) наличие именно первой открытой вкладки. Может вернуться handle для любой случайной открытой вкладки (окна) - нужно обращать на это внимание. По крайней мере в java