Selenium Python迭代它在第一行停止的行表

Selenium Python迭代它在第一行停止的行表,python,python-2.7,selenium,selenium-webdriver,Python,Python 2.7,Selenium,Selenium Webdriver,我正在使用Selenium Python迭代一个行表。在GUI上,我从表中删除了一项。在我的脚本中,我正在检查项目是否不存在,以验证它是否已被删除。 当我迭代我的表时,它在第一行停止。它直到最后一行才继续 例如,我正在将Name参数传递给我的方法。我想迭代整个表的行,列1,并检查名称是否不存在。如果名称不存在,则返回true 我的代码片段是: def is_data_objet_deleted(self, name): # Params : name : the name of the

我正在使用Selenium Python迭代一个行表。在GUI上,我从表中删除了一项。在我的脚本中,我正在检查项目是否不存在,以验证它是否已被删除。 当我迭代我的表时,它在第一行停止。它直到最后一行才继续

例如,我正在将Name参数传递给我的方法。我想迭代整个表的行,列1,并检查名称是否不存在。如果名称不存在,则返回true

我的代码片段是:

def is_data_objet_deleted(self, name):
    # Params : name : the name of the data object, e.g. Name, Address, Phone, DOB
     try:
        #WebDriverWait(self.driver, 20).until(EC.presence_of_element_located((By.ID, 'data_configuration_data_objects_ct_fields_body')))
        table_id = WebDriverWait(self.driver, 20).until(EC.presence_of_element_located((By.ID, 'data_configuration_data_objects_ct_fields_body')))
        rows = table_id.find_elements(By.TAG_NAME, "tr")
        for row in rows:
            # Get the columns
            col_name = row.find_elements(By.TAG_NAME, "td")[1]  # This is the Checkbox column
            col_name = row.find_elements(By.TAG_NAME, "td")[2]  # This is the Name column
            print "col_name.text = "
            print col_name.text
            if (col_name.text != name):
                return True
            #return False
     except NoSuchElementException, e:
        print "Element not found "
        print e
        self.save_screenshot("data_objects_page_saved_details")
        return False
我的桌子停在第一排。 请帮帮忙, 谢谢 Riaz

我只会使用:

基本上,如果所有名称不等于
name
,则返回
True
,换句话说,如果
name
不存在,则返回
True


顺便说一句,您正在处理
NoTouchElementException
,但是在
try
块中使用的任何方法都不会抛出它-
find_elements()
如果没有找到与定位器匹配的元素,将返回一个空列表。

您告诉它在第一行停止,如果该行不包含文本

要修复此问题,请更改以下内容:

for row in rows:
    ...
    if (col_name.text != name):
        return True
为此:

for row in rows:
    ...
    if (col_name.text == name):
        return False
return True

您希望查看每一行,直到找到要查找的项目。如果找到它,函数应该返回False。如果在整个循环中都没有返回False,那么您要查找的项不在表中,您应该返回True。

pythonic,但对于编程新手来说不是很清楚。我的方法save_屏幕截图是我制作的自定义方法,它在我的基类中。我在save_屏幕截图中插入了一个Try Catch块。应该调用它,不是吗?如果找不到匹配的定位器,Ah find元素将返回一个空列表。那么我应该在我的捕获块中使用什么呢?@RiazLadhani啊,如果找到了名字,你基本上想做一个截图,对吗?然后,我将把
all()
的结果分配给一个变量,如果是真的,则制作一个屏幕截图。然后返回变量。
for row in rows:
    ...
    if (col_name.text == name):
        return False
return True