Python中点击元素后返回0的问题如何解决?

<a class=‘dz’ onclick=‘check_dai(153398)’ href=‘javascript:(0)’>点 赞</a>

对应的 JS:
function check_dai(record_id){
document.form_main.action = ‘bidinfo.jsp?record_id=’+record_id;
document.form_main.op.value=‘op_submit’;
document.form_main.submit();
}


点击这个元素后直接返回个 0。。。喵喵喵???浏览器直接点击的话会出 alert 提示投票成功
Python中点击元素后返回0的问题如何解决?


4 回复

那你用什么点的?最终肯定有个请求啊,自己构造,然后发送请求呗


这个问题通常出现在用Selenium这类库做网页自动化测试的时候。最常见的原因是元素虽然能点击,但点击后页面状态变化导致后续操作失败,或者元素本身就有问题。

给你几个排查方向:

  1. 等页面稳定:点击后加个等待,别急着拿结果
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
element = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "your_element_id"))
)
element.click()

# 等结果出来
result = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "result_element"))
)
print(result.text)  # 别直接假设返回0,先看看实际内容
  1. 检查是不是真的点到了:有时候元素被遮住了
# 试试用JavaScript直接点
driver.execute_script("arguments[0].click();", element)
  1. 看看是不是弹窗或者新窗口:点击后可能弹出新东西
# 切到新窗口
original_window = driver.current_window_handle
for window_handle in driver.window_handles:
    if window_handle != original_window:
        driver.switch_to.window(window_handle)
        break
  1. 元素可能已经变了:重新定位一下
# 点击后重新找元素
element.click()
new_element = driver.find_element(By.ID, "updated_element")

建议:先加等待,再用JS点击试试。

href=‘javascript:;’

javascript:void(0)

回到顶部