我试图在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.
答案 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")