XPath中的累加器:有可能吗? (蟒蛇)

时间:2018-02-02 12:51:07

标签: python selenium xpath accumulate

我试图在XPath中进行累积,是否可能?

查看我的代码:

driver = webdriver.Chrome()
driver.get('http://www.imdb.com/user/ur33778891/watchlist?ref_=wt_nv_wl_all_0')
wait = (WebDriverWait, 10)
x = 1
while True:

        try:

                film = driver.find_element(By.XPATH, "((//h3[@class='lister-item-header']/a)[%d]"  % x).text
                x = x + 1
                print(film)

问题是,我试图在用户监视列表中访问IMDB网站,并通过这种方法获得电影的名称,但我认为不可能使用%为此目的,Selenium允许哪些工作可以完成这项工作?

PS:字符串和数字都不起作用。

问题是:如果你打开IMDB监视列表,会有一个电影列表,然后XPath是相同的// h3 [@class =' lister-item-header'] / a,但我正在考虑如何单独选择,我知道可以这样做:

  //h3[@class='lister-item-header']/a [1] #this will select the first movie
  //h3[@class='lister-item-header']/a [2] #this will select the second movie

现在,有没有办法自动执行此操作?我在考虑累加器,而不是[1]我将把[x]确定为x = x + 1.

2 个答案:

答案 0 :(得分:2)

使用以下代码:

xpath = "//h3[@class='lister-item-header']/a[{}]".format(x)

之后使用如下:

film = driver.find_element(By.XPATH, xpath).text

希望它可以帮到你!

答案 1 :(得分:1)

当您从 x = 1 开始时,您可以按如下方式使用索引:

film = driver.find_elements_by_xpath("//h3[@class='lister-item-header']/a")[x].get_attribute("innerHTML")