getAttribute isPermaLink возвращает нулевое значение для элемента в RSS-канале с помощью транспортира - PullRequest
2 голосов
/ 27 января 2020

Я пробовал много способов получить значение атрибута isPermaLink с помощью транспортира.

Я могу получить значение любого другого элемента в порядке, но isPermaLink всегда возвращает ноль ..

HTML

<guid isPermaLink="false">public-anger-grows-over-coronavirus-123829864.html</guid>

Код

const isPerma = element(by.xpath('//guid[@isPermaLink]')).
console.log('isPermaLink value ', await isPerma.getAttribute('isPermaLink'));

Если я попробую другие элементы, например тег источника, я смогу получить значение

<source url="http://www.ap.org/">Associated Press</source>

Элемент, расположенный в инструментах разработчика DevTools Screenshot

Используемая ссылка на RSS-канал Yahoo Rss: https://news.yahoo.com/rss/

1 Ответ

1 голос
/ 31 января 2020

Ответы (точнее мое понимание проблемы):

  1. Как вы можете получить атрибут?
let $permaLink = $$('guid[isPermaLink]').get(0);
let attr = await browser.executeScript('return arguments[0].getAttribute("isPermaLink")', $permaLink.getWebElement());
console.log(attr) // false
Почему await element.getAttribute('isPermaLink') не работает?

Представьте, что у вас есть iframe внутри страницы html, и вы ищете элемент внутри этого фрейма. В этом случае вы можете взаимодействовать с элементом в консоли браузера (найдите его и т. Д. c), но со стороны транспортира вы сможете взаимодействовать с ним только после browser.switchTo().frame(element(by.tagName('iframe')).getWebElement());

В вашем случае, у вас есть xml внутри html страницы, которая ведет себя аналогично. Однако транспортир работает только с самим документом (но не с документом внутри документа). Проблема в том, что если вы попробуете switchTo, вы получите ошибку no such frame: element is not a frame. Потому что метод предназначен ТОЛЬКО для работы с iframe, но концепция та же

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...