Selenium:为什么“send_keys(Keys.RETURN)”有效而“click()”无效?

0 投票
1 回答
1478 浏览
提问于 2025-04-18 10:56

我有一个按钮元素(具体来说是必应搜索按钮),它对以下代码能正常响应和工作:

button.send_keys(Keys.RETURN)

但是当我尝试以下代码时:

button.click()

它给我返回了“\'\'undefined\' 不是一个对象”的错误。有人能解释一下这是为什么吗?如果有帮助的话,我是在用PhantomJS这个浏览器,并且我确实在搜索框里输入了文本。

我在我的Mac上让代码运行得很好,但现在在我的Ubuntu服务器上却不行。这可能很重要。

看起来问题的原因是,当你在必应搜索框里输入文本时,搜索框会扩展,按钮会被移动到右边很多。不过,为什么点击按钮的方法不管用,而按回车键却能正常工作呢?

1 个回答

2

有时候可能会遇到这样的问题。你可以试试以下几个方法:

  1. 检查选择器!可能有其他元素也用的是相同的类名(比如说),但你用的是 find_element_by_class_name,这个方法只适合找单个元素。可以查看错误信息来了解更多。

  2. AJAX问题。有些网站使用了很多JavaScript,这会导致请求需要一些时间,或者点击操作因为某些原因无法正常工作。

  3. 由于之前提到的问题,可以尝试用JavaScript点击这个元素。如果可以的话,试试 driver.execute_script() 这个方法。

撰写回答