【问题标题】:How to get total count of div tags inside a div tag using python selenium webdriver如何使用python selenium webdriver获取div标签内的div标签总数
【发布时间】:2018-06-18 18:23:42
【问题描述】:

我正在测试一个脚本来查找 div 标签内的 div 标签的数量,这样做的原因...是为了获取完整路径中的最后一个 div 编号( div[last div] )。

div 的完整路径如下:

full_path = '//*[@id="main"]/div[2]/div/div # continue line
/div[2]/div[i want the total div count here]/div/ # continue line
div/div[2]/div/div'

将路径拆分为 4 个部分

full_path = '//*[@id="main"]/div[2]/div/div/div[2]/div[14]/div/div/div[2]/div/div'

half_path1 = '//*[@id="main"]/div[2]/div/div/div[2]'

half_path_with_slash = '//*[@id="main"]/div[2]/div/div/div[2]/'

second_half_path = '/div/div/div[2]/div/div'


print ('going to search')

test_path = wait.until(EC.presence_of_element_located((By.XPATH,half_path)))

count = driver.select_list(:id=> 'div').options.count

print ('searching')

print (count) # not working

所以我尝试了这样的事情:

    waitof = WebDriverWait(driver = driver, timeout = 9)

    array = [] # to collect the div count

    for i in array:

        test_path = waitof.until(EC.presence_of_element_located((By.XPATH,half_path1)))
        print('div loaded')

        test_pathx = driver.find_element_by_xpath(slash_path)
        array.append(text_pathx)
        print ('first loop')
        for i in test_pathx:
            print ('second loop')
            loop_path = driver.find_element_by_xpath(just_path1 +'div[%d]' % (i))
            div_elements.append[i]
            print(div_elements[i])

    awesome_full_path = ('//*[@id="main"]/div[2]/div/div/div[2]/div[%d]
/div/div/div[2]/div/div' % div_elements)

它不工作请帮助!!! 如果问题不清楚,请发表评论(此处为新)

【问题讨论】:

    标签: arrays python-3.x selenium selenium-webdriver xpath


    【解决方案1】:

    如果您只是想获取另一个 div 的子 div 节点的数量,您可以实现如下所示:

    parent_div = driver.find_element_by_xpath("//div")
    count_of_divs = len(parent_div.find_elements_by_xpath("./div"))
    

    或直接

    count_of_divs = len(driver.find_elements_by_xpath("//div/div"))
    

    请注意,要选择所需的 div,您应该使用一些 predicate 以确保您的 XPath 是唯一的

    如果你想选择last div child你也可以试试

    driver.find_element_by_xpath("//div/div[last()]")
    

    【讨论】:

    • parent_div = driver.find_element_by_xpath('//*[@id="main"]/div[2]/div/div/div[2]/')。 count_of_divs = len(parent_div.find_elements_by_xpath("./div")) 像这样?
    • 删除最后一个斜线。如果您提供相同的 HTML 示例会更好
    • 我没听懂? @安德森
    • 这里//*[@id="main"]/div[2]/div/div/div[2]/ 最后一个斜线是多余的。另外你我建议你不要使用某些浏览器工具生成的 XPath,而是使用你自己的...
    • 。 .可能更多(我们不知道)。 .
      # 需要最后一个 div
    猜你喜欢
    • 2017-05-09
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多