RegEx внутри строки с селеном - PullRequest
1 голос
/ 25 апреля 2019

Я использую селен, с методом find_element_by_path, чтобы выполнить некоторые операции по поиску в сети, у меня есть некоторые проблемы с получением пути, который изменяется через страницы, я знаю, как пишется путь, но одна из строк в пути изменяется через мойцикл, я хотел бы знать, как я могу использовать регулярные выражения для ее решения.

У меня есть этот код для одной из страниц, но когда я перебираю все страницы, меняется строка «NUMBER» ниже:

browser.find_element_by_xpath(re.compile('//*[@id="exhibDetail:exhib"]/section[3]/div[2]/div/div[2]/div/div/div[NUMBER]/div').click()

Я хочу знать,можно было использовать регулярное выражение, чтобы сказать, что оно должно щелкнуть «НОМЕР», если остальная часть пути одинакова, поэтому я попробовал это, но я не уверен насчет синтаксиса и того, как использовать регулярное выражение здесь:

browser.find_element_by_xpath('//*[@id="exhibDetail:exhib"]/section[3]/div[2]/div/div[2]/div/div/div[').     + re.compile("^[1-9]\d*$")    +      ']/div').click()


 browser.find_element_by_xpath(re.compile('^//*[@id="exhibDetail:exhib"]/section[3]/div[2]/div/div[2]/div/div/div[')).click()


browser.find_element_by_xpath('//*[@id="exhibDetail:exhib"]/section[3]/div[2]/div/div[2]/div/div/div[1]/div').click()
browser.find_element_by_xpath('//*[@id="exhibDetail:exhib"]/section[3]/div[2]/div/div[2]/div/div/div[9]/div').click()
browser.find_element_by_xpath('//*[@id="exhibDetail:exhib"]/section[3]/div[2]/div/div[2]/div/div/div[4]/div').click()
browser.find_element_by_xpath('//*[@id="exhibDetail:exhib"]/section[3]/div[2]/div/div[2]/div/div/div[10]/div').click()
browser.find_element_by_xpath('//*[@id="exhibDetail:exhib"]/section[3]/div[2]/div/div[2]/div/div/div[6]/div').click()

путь развивается более или менее таким образом (случайным образом), но не постепенно, один за другим.

Как мне решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

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

Если вы хотите выбрать элементы div независимо от их положения (то есть то, что тестируют предикаты [1], [2] и т. Д.), То просто не используйте предикаты вообще:

//*[@id="exhibDetail:exhib"]/section[3]/div[2]/div/div[2]/div/div/div/div
0 голосов
/ 25 апреля 2019

Добро пожаловать в SO.

Если вы пытаетесь передать NUMBER как часть xpath в вашем цикле, вы можете сделать следующее:

Если NUMBER в целом числе:

browser.find_element_by_xpath("//*@id='exhibDetail:exhib']/section[3]/div[2]/div/div[2]/div/div/div[%i]/div"%(NUMBER)).click()

Если NUMBER - строка

browser.find_element_by_xpath("//*@id='exhibDetail:exhib']/section[3]/div[2]/div/div[2]/div/div/div[%s]/div"%(NUMBER)).click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...