Xpath Selectors - возможно ли найти элементы по названию в селене? - PullRequest
0 голосов
/ 09 апреля 2020

Я пытался создать бота, который очищает имя подписчиков, которым нравится картинка в Instagram. На веб-сайте открывается всплывающее окно с учетными записями в стороне, и, по-видимому, окно обновляет ссылки на учетные записи при их прокрутке. Я написал код, который откроет окно и затем прокрутит его, но я не могу получить селен, чтобы очистить имена учетных записей. Мой код выглядит так, чтобы прокрутить всплывающее окно:

realscroll_box = browser.find_element_by_xpath('/html/body/div[4]/div/div[3]/div')
while last_ht != ht:
last_ht = ht
time.sleep(2)
ht = browser.execute_script('''
                            arguments[0].scrollTo(0, arguments[0].scrollHeight);
                            return arguments[0].scrollHeight;
                            ''', realscroll_box)
namelinkstemp1 = realscroll_box.find_elements_by_xpath('//*[contains(@href,"/")')

Но это дает мне эту ошибку:

selenium.common.exceptions.InvalidSelectorException: Сообщение: неверный селектор: Невозможно найти элемент с выражением xpath // [starrts-with (@href, "/") из-за следующей ошибки: SyntaxError: Не удалось выполнить 'define' для 'Document': строка '// [starrts-with (@href, "/") 'не является допустимым выражением XPath.

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

<a title="instagramusername" href="/instagramusername/">
<div class="                   Igw0E     IwRSH      eGOV_     ybXk5    _4EzTm                                                                                                              ">
<div class="_7UhW9   xLCgt       qyrsm KV-D4            fDxYl      rWtOq">
<div class="                   Igw0E   rBNOH        eGOV_     ybXk5    _4EzTm                                                                                                              ">instagramusername</div>
</div>
</div>
</a>

Любая помощь приветствую, запросы xpath очень новые для меня.

Спасибо:)

1 Ответ

0 голосов
/ 09 апреля 2020

Функция Startts-with находит элемент на основе значения атрибута. В вашем коде функция не правильная. Также //*[contains(@href,"/"), здесь вы пропустили ] Правильный: //a[contains(@href, '/')]

  //*[starts-with(@href,'/')]

или

//a[starts-with(@href,'/instagramuse')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...