1

当我点击时,edit profile link我会看到一个包含我的个人资料信息的页面。我想在那里设置我的家乡。在我尝试提交之前一切正常。硒告诉我,没有这样的元素。但它就在那里!在开发人员工具中,我什至可以看到它不是display:block. 有什么问题?它是在新框架中打开还是其他?我找不到保存按钮。我试过ActionChains(driver).move_to_element.click().perform()了,但它什么也没给我......`谁能解释我如何点击按钮?那里的所有编辑表单中都有相同的按钮...
UPD:它看到文本输入和ajax表单以从建议的选项中进行选择,但不是同一表单中的按钮...我无法理解。
这是我的代码:

def _update_hometown(self):
    try:
        curr_city = self.driver.find_element(By.ID, u"current_city")
        curr_city.find_element(By.CLASS_NAME, u"fbProfileBlankStateIcon").click()
        WebDriverWait(self.driver, 15).until(ec.presence_of_element_located((By.ID, u"edit_hometown")))
        input_field = self.driver.find_element(By.ID, u"edit_hometown").find_element(By.CLASS_NAME, u"inputtext")
        input_field.send_keys(u"Moscow")
        input_field.click()
        WebDriverWait(self.driver, 15).until(ec.presence_of_element_located((By.CLASS_NAME, u"text")))
        self.driver.find_element(By.CLASS_NAME, u"text").click()
        self.driver.find_element(By.NAME, "save").click()

    except ElementNotVisibleException as NVE:
        print "Button not visible! {0}".format(NVE.msg)
        self._stack_trace(sys.exc_info())
    except TimeoutException as TE:
        print "Timeout failure. {0}".format(TE.msg)

    except NoSuchElementException as nse:
        print 'Error. Element not found! {0}'.format(nse.msg)
        import traceback
        type_, value_, trace_ = sys.exc_info()
        print traceback.format_tb(trace_)
    except:
        print "Something went wrong."
        import traceback
        type_, value_, trace_ = sys.exc_info()
        print type_, "\t", value_
        print traceback.format_tb(trace_)  

这是此表单的来源,从开发工具中获取:
链接到 pastebin。facebook 表单源
链接到 patbin。我的代码
UPD:driver.window_handles只返回一个窗口。

4

1 回答 1

0

所以我没有明白什么是错的......我试图用它重写所有find_element内容XPATH并且它有效。不过很奇怪。

于 2013-10-15T09:27:11.697 回答