通过xpath通过表中元素的索引号查找元素

时间:2019-02-17 15:53:22

标签: python selenium xpath indexing

我正在尝试通过Python Selenium中的索引号查找元素。元素具有以下xpath;

/html/body/div[4]/div[1]/div[3]/div/div[2]/div/div/div/div/div/div/div[1]/div[2]/div/div/div/div[2]/div/div/div/div[2]/div/div[3]/div[1]/div/div/div[9]

我还包括了我想要的元素的以下图像。

我想要的元素:
Element I want

我能够通过普通的xpath找到该元素,但是我想循环执行10,000次。

我想知道是否存在一种使用其索引号查找元素的方法。这是我拥有的代码,仅适用于索引值5,但无法正常工作。

Fund_click.append (driver.find_element_by_xpath("//div[@id='app']/div[1]/div[3]/div/div[2]/div/div/div/div/div/div/div[1]/div[2]/div/div/div/div[2]/div/div/div/div[2]/div/div[3]/div[1]/div/div/[div/@index='5']"))

2 个答案:

答案 0 :(得分:0)

根据您的快照,您可以尝试通过这种方式查看您是否有所不同。我已经考虑将claas&Index属性。

for i in range(1,10000):    
   print(driver.find_element_by_xpath("//div[@class='tg-row tg-level-0 tg-even tg-focused']" and "//div[@index='" + str(i) + "']"))

如果要使用索引号,请尝试下面的代码。但是我不确定您只能使用索引来识别元素,因此最好尝试上面的第一个选项。

for i in range(1,10000):
   print(driver.find_element_by_xpath("//div[@index='" + str(i) + "']"))

答案 1 :(得分:0)

尝试下面的xpath进行确认,是否可以找到所有元素?如果页面已完全加载,则应该看到所有匹配项(手动检查)。

from flask import Flask

def create_app():
    app = Flask(__name__)
    def run_on_start(*args, **argv):
        print "function before start"
    run_on_start()
    return app

app = create_app()

@app.route("/")
def hello():
    return "Hello World!"

您可以在上述xpath定位器的帮助下,使用//div[@id='app']//div[contains(@class, 'tg-row')] 方法来获取和存储所有元素,从而避免每次都遍历元素索引。尝试以下代码:

driver.find_elements_by_xpath()

如果元素存在并且获取# Fetching and storing all the matches elements = driver.find_elements_by_xpath("//div[@id='app']//div[contains(@class, 'tg-row')]"); for element in elements: # printing the index numbers to confirm it has fetched or not? print(element.get_attribute('index')) 或检查NoSuchElementException,请尝试在获取元素之前给予一些延迟。

如果所有元素都不可见,则您需要执行一些滚动操作。

如果上述方法不起作用,则可以尝试使用以下xpath基于索引/匹配索引号来标识该元素,然后可以继续进行操作。

  

(// div [@ id ='app'] // div [包含(@class,'tg-row')])[匹配索引]

  

// div [@ id ='app'] // div [包含(@class,'tg-row')和@ index ='provide   索引号在这里']

  

// div [包含(@class,'tg-row')和@ index ='提供索引号   这里']

  

// div [@ index ='在此处提供索引号']

  

(// div [包含(@class,'tg-row')]))[提供匹配的索引号   这里]

希望对您有帮助...