如何在python中将循环编号嵌套到xpath中?

2024-10-01 09:26:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有xpath来跟踪selenium网站上的用户。到目前为止,我的想法是:

followloop = [1,2,3,4,5,6,7,8,9,10]
for x in followloop:
    driver.find_element_by_xpath("/html/body/div[7]/div/div/div[2]/div[>>>here is where i want the increment to increase<<<]/div[2]/div[1]/div/button").click()

所以我在代码中声明的地方就是我希望数字递增的地方。同样,正如你在for循环中看到的,Im'正在做1,2,3,4,5…我能把它编码得更简单一些吗?因为我不只是想要1-10,我会想要1-无论是更高的数字。在

我试着把x放在我想要的地方,但是我意识到python不会发现它是我想放在那个槽中的一个变量,只会把它当作xpath的一部分。那么我如何使它在每个循环中,把递增的数字变量放入其中呢?在


Tags: 用户indivforby网站htmldriver
3条回答

您需要将for循环中的索引转换为字符串并在xpath中使用:

follow_loop = range(1, 11)
for x in follow_loop:
    xpath = "/html/body/div[7]/div/div/div[2]/div["
    xpath += str(x)
    xpath += "]/div[2]/div[1]/div/button"
    driver.find_element_by_xpath(xpath).click()

另外,通常会有一种更简洁/更好的方法来选择元素,而不是使用XPath/html/body/div[7]/div/div/div[2]。尝试按类或按id选择元素,例如:

^{pr2}$

使用格式字符串。在

并使用range()(或xrange()表示更大的数字)。它正是你想要的。在

for x in range(10):
    driver.find_element_by_xpath("/html/body/div[7]/div/div/div[2]/div[%d]/div[2]/div[1]/div/button" % (x,)).click()

我将使用通配符“%s”作为您的任务和range(),如前面的注释所示:

for x in range(0,100): 
     driver.find_element_by_xpath("/html/body/div[7]/div/div/div[2]/div[%s]/div[2]/ 
     div[1]/div/button").click() % x

相关问题 更多 >