Как я могу найти случайно Xpath с помощью Selenium? - PullRequest
0 голосов
/ 02 июля 2018

Я новичок в Selenium и использую Python для его сборки. Недавно я нашел вопрос, который хочу задать кому-то, кто может мне помочь разобраться. Вопрос в том, что Xpath я хочу получить случайно, например:

// * [@ ид = "вики-редактирование-wikiEdit26"] / дела / дела / дела / дела [2] / а [1]

// * [@ ид = "вики-редактирование-wikiEdit27"] / дела / дела / дела / дела [2] / а [1]

// * [@ ид = "вики-редактирование-wikiEdit28"] / дела / дела / дела / дела [2] / а [1]

Эти три xpath используются для одной и той же кнопки, но число после wikiEdit будет меняться каждый раз. Поэтому, есть ли способ, который может помочь мне выполнить мой сценарий более гладко? Большое спасибо!

Вот мой код Python:

broswer.find.element_by_xpath('//*[@id="wiki-edit-wikiEdit26"]/div/div/div/div[2]/a[1]') .click() 

Ответы [ 3 ]

0 голосов
/ 02 июля 2018

Вы можете использовать matches в xpath для этого,

broswer.find.element_by_xpath("//*[matches(@id, '^(wiki-edit-wikiEdit)[0-9]')]/div/div/div/div[2]/a[1]") .click() 

так, что в основном соответствует id что угодно, начиная с wiki-edit-wikiEdit, за которым следуют цифры [0-9]

0 голосов
/ 02 июля 2018

Вы можете использовать starts-with или contains

broswer.find.element_by_xpath("//*[contains(@id,'wiki-edit-wikiEdit')]/div/div/div/div[2]/a[1]").click()

Кроме того, использование таких длинных путей не рекомендуется. Используйте css-selectors более xpath.

0 голосов
/ 02 июля 2018

Вам просто нужно отформатировать строку ..

import random
# Random range 1 - 100
x = random.randint(1,100)

broswer.find.element_by_xpath(f'//*[@id="wiki-edit-wikiEdit{x}"]/div/div/div/div[2]/a[1]') .click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...