Найти в html, где атрибут элемента содержит строку selenium - PullRequest
1 голос
/ 02 марта 2020

Я очищаю веб-сайт с битом html в этом формате.

</p></div><div class="content "><ul class="office-list"><li><a href="javascript:void(0)" class="_office atlanta" data-slug="atlanta" data-title="Atlanta" data-address="Twilio Atlanta<br />950 East Paces Ferry Road NE, 18th Floor<br />Atlanta, GA 30326<br />" 

Я попытался использовать код python, который:

items = driver.find_elements_by_xpath("//*[contains(@class, 'address')]")
    for item in items:
        addresses.append(item.text)

Однако в этом случае это не класс, который содержит 'address', это data-address. Как я могу найти любой атрибут элемента, который содержит 'address'?

1 Ответ

1 голос
/ 02 марта 2020

Вы можете сделать это с помощью функции name()

items = driver.find_elements_by_xpath("//@*[contains(name(),'address')]/..")

Текст, который вы ищете, находится в атрибуте. Поскольку вы знаете только часть имени, вам нужно использовать JavaScript, чтобы получить

value = driver.execute_script(
'for (index = 0; index < arguments[0].attributes.length; ++index) {
   if (arguments[0].attributes[index].name.includes("address")) {
     return arguments[0].attributes[index].value;
   }
}', element)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...