我要自动化的页面是我的大学网站,其中包含有关每个科目的出勤率的所有信息,科目数量随不同学年的学生而有所不同
所以我需要一种自动计数主题数的方法
so subject 1 Xpath - //*[@id="MainContent_GridView4"]/tbody/tr[2]/td[2]
subject 2 Xpath - //*[@id="MainContent_GridView4"]/tbody/tr[3]/td[2]
在xpath模式'tr [2]中,一个学生课程(Mech)的范围为2-10,其他学生课程(cse)的范围为2-9
temp = '//*[@id="MainContent_GridView4"]/tbody/tr['
for x in range(2,10):
sub1 =temp + str(x) + ']/td[1]'
k = driver.find_element(By.XPATH,sub1)
我提到的上述代码仅适用于Cse学生,当与mech学生页面一起使用时,似乎错过了最终列表中的主题 因此,如果有一种方法可以计数主题的数量,我可以在循环中使用该计数
答案 0 :(得分:0)
您可以尝试使用find_elements代替find_element。如果使用提供的xpath未找到任何元素,它将返回一个空列表。因此,您可以围绕它建立逻辑以进行进一步的自动化。例如如果list的大小> 0,则执行其他操作。
答案 1 :(得分:-1)
您可以使用findElements来返回元素列表。
但是为此,您的xpath应该指向该td上的所有元素,因此您可以执行以下操作:
Xpath-// * [@@ == MainContent_GridView4'] / tbody / tr [2] / td
在上面的Xpath中,我删除了td的数组索引,因此按照上面的示例,现在您的xpath指向tr [2]中的所有td。
现在
count = driver.find_elements_by_xpath("//*[@id='MainContent_GridView4']/tbody/tr[2]/td");
len(count);
现在使用len来获取元素的大小
现在,您可以根据需要使用循环,因为您可以动态获取元素的确切大小