2014-03-05 182 views
0

我试图从这个网页刮数据... “http://agmarknet.nic.in/mark2_new.asp硒不会点击按钮

我需要在商品搜索输入“香蕉”,然后单击“转到”按钮。

在堆栈溢出的帮助下,我可以调出Firefox,键入“香蕉”...但“Go”按钮(根据检查Go3)不会发生火灾!

我试过element.click(),我试过ActionChains,我试过将光标移动到元素,我已经验证它已启用。它只是不会去下一个搜索页面。

其他搜索按钮(B1 ...这是一个通用搜索)的作品...除了当硒点击它时,它会带来一个不同的页面,当我手动点击它......所以这很奇怪太。

我不会收到任何错误...它只是不会进入下一页。

在此先感谢您提供的任何帮助。这让我疯狂!

def SLEEP(num): 
    for i in range(0,num,1): 
     print ".", 
     time.sleep(1) 

def click_button(driver, button_name): 
    assert driver.find_element_by_name(button_name) 
    button = driver.find_element_by_name(button_name) 

    if button.is_enabled(): 
     print "it is enabled" 
    else: 
     print "IT IS NOT ENABLED" 

    # Try with element 
    button.click() 
    #Try with action chain 
    action = ActionChains(driver) 
    action.move_to_element(driver.find_element_by_name(button_name)) 
    action.click(driver.find_element_by_name(button_name)) 
    action.perform() 

# WORKS 
driver = webdriver.Firefox() 
driver.get("http://agmarknet.nic.in/mark2_new.asp") 
SLEEP(5) 
assert "AG" in driver.title 
print driver.title 

# WORKS 
textinput = driver.find_element_by_name('cmm') 
textinput.send_keys("banana") 
SLEEP(5) 

# SORT OF WORKS (brings up unexpected page) 
button_name = "B1" 
click_button(driver, button_name) 

# DOES NOT WORK 
button_name = "Go3" 
click_button(driver, button_name) 
+0

我同意alecxe说您的问题无法复制。 – Louis

回答

1

button.click()适合我。请注意,你不需要把time.sleep动作之间:

from selenium import webdriver 


driver = webdriver.Firefox() 
driver.get("http://agmarknet.nic.in/mark2_new.asp") 

textinput = driver.find_element_by_name('cmm') 
textinput.send_keys("banana") 

button_name = "Go3" 
button = driver.find_element_by_name(button_name) 
button.click() 

另外,代替click()你可以把空格键:

from selenium.webdriver.common.keys import Keys 

... 

button.send_keys(Keys.SPACE) 

希望有所帮助。

+0

谢谢!它很好知道。也许是因为我用完了Eclipse。让我从命令行尝试它... – RightmireM

+0

我交换到phantomjs,它的工作原理。不知道我的Firefox有什么问题。 – RightmireM