Как я могу использовать числовую последовательность в XPath с Python + Selenium? - PullRequest
0 голосов
/ 26 апреля 2019

Я думаю, что этот вопрос действительно прост, но я понятия не имею, что делать.У меня есть этот элемент XPath с числовой последовательностью от 1 до 8. Мне нужно открыть все из них, один за другим.

//*[@id="meio"]/div[2]/section/article[1]/h2/span/a[1]
//*[@id="meio"]/div[2]/section/article[2]/h2/span/a[1]
//*[@id="meio"]/div[2]/section/article[3]/h2/span/a[1]
//*[@id="meio"]/div[2]/section/article[4]/h2/span/a[1]
//*[@id="meio"]/div[2]/section/article[5]/h2/span/a[1]
//*[@id="meio"]/div[2]/section/article[6]/h2/span/a[1]
//*[@id="meio"]/div[2]/section/article[7]/h2/span/a[1]
//*[@id="meio"]/div[2]/section/article[8]/h2/span/a[1]

Я пытался сделать это:

while w > 0:
    i = 0
    a = str(i)
    while i < 8:
        i += 1
        driver.find_element_by_xpath('//*[@id="meio"]/div[2]/section/article[" + str(i) + "]/h2/span/a').click()
        driver.refresh()
        #there's more code after this, but I don't think it's necessary.

Но он делает то, что мне нужно сделать на первой странице, затем возвращается и продолжает цикл на первой странице навсегда,Я не могу нажать на XPath 2 или любой другой, кроме 1. Что я делаю не так?

Каждый раз, когда начинается цикл, мне нужно увеличить одно число внутри XPath, как я могу это сделать?

1 Ответ

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

А как насчет этого?

articles_with_links = driver.find_elements_by_xpath('//*[@id="meio"]/div[2]/section/article')

for article in articles_with_links:
    article.find_element_by_xpath('//h2/span/a').click()
...