2015-04-01 189 views
2

我想要一个WebDriver实例无限期地监视一个页面,直到出现一个名为'move'的输入框。一旦输入框出现,我想用一些文本填充它,然后单击表单旁边的提交按钮。什么是最简单的方法来做到这一点?Selenium with Python - 无限期地等待,直到输入框出现为止

我现在是这样的:

try: 
    move = WebDriverWait(driver, 1000).until(
     EC.presence_of_element_located((By.NAME, "move")) 
    ) 
finally: 
    wd.quit() 

,毗邻表单的按钮没有名称或ID,所以我通过XPATH中找到它。我希望等到表单出现后再点击按钮。

我该怎么做?

回答

2

监控页面无限期,直到一个输入框出现

您在例如使用的Explicit wait需要定义的超时值。您可以为超时设置一个非常高的值,或者它不是一个选项。

或者,你可以有一个while True循环,直到一个元素会被发现:

from selenium.common.exceptions import NoSuchElementException 

while True: 
    try: 
     form = driver.find_element_by_name("move") 
     break 
    except NoSuchElementException: 
     continue 

button = form.find_element_by_xpath("following-sibling::button") 
button.click() 

在那里我假设button元素是形式的following sibling

+0

你绝对辉煌。按钮策略中出现以下错误:http://i.imgur.com/Ov9gjOx.png。有任何想法吗? HTML看起来像这样:http://i.imgur.com/hUwP8kc.png – Parseltongue 2015-04-01 05:55:25