Selenium 不会点击按钮

0 投票
1 回答
4853 浏览
提问于 2025-04-17 20:57

我正在尝试从这个网页上抓取数据... "http://agmarknet.nic.in/mark2_new.asp"

我需要在商品搜索框里输入“香蕉”,然后点击“开始”按钮。

在Stack Overflow的帮助下,我能够打开Firefox,输入“香蕉”...但是“开始”按钮(根据检查,它叫Go3)就是不响应!!

我试过用element.click(),也试过ActionChains,还试过把鼠标移动到这个按钮上,我确认它是可以用的。就是不跳转到下一个搜索页面。

另一个搜索按钮(B1...是个通用搜索)好像能用...但是当selenium点击它时,打开的页面和我手动点击时的页面不一样...这也很奇怪。

我没有收到任何错误信息...就是不跳转到下一个页面。

谢谢你们的任何帮助。这让我快要疯了!

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)

1 个回答

2

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)

希望这对你有帮助。

撰写回答