Selenium Python sel.click("css=input.smthg")?

0 投票
1 回答
616 浏览
提问于 2025-04-17 05:33

我正在用Python写一个Selenium的脚本,但是当我选择一个CSS时,"sel.click"这个操作不起作用:

def test_test_remote(self):
    sel = self.selenium
    sel.open("/fr")
    sel.click("id=flightFrom")
    sel.type("id=flightFrom", "Londres-Stansted")
    sel.type("id=flightTo", "Dublin")
    sel.click("id=termsAccept")
    sel.click("css=input.bookFlightButton") ----> nothing happens
    sel.wait_for_page_to_load("30000")

有没有人知道怎么回事?

谢谢。

文森特

1 个回答

0

这很可能是因为网站背后有一些JavaScript代码在运行。当你用浏览器浏览网站时,点击某个元素一切正常。比如说,input.bookFlightButton 这个按钮实际上是在它的 mouseup 事件中处理提交请求的,这样的话,你的 click 命令可能就会失败。

我会尝试两件事。首先,检查一下能不能用Selenium的 Submit Form 命令来提交你的表单。如果运气好的话,这样可以得到你想要的结果。

第二件事,你需要稍微研究一下JavaScript。如果这个网站使用了jQuery,可以在浏览器中打开一个命令窗口(Chrome默认有这个功能;Firefox需要安装Firebug,IE就不太清楚了)。然后试着用jQuery来触发表单提交:

$('input.bookFlightButton').click()
$('input.bookFlightButton').mouseup()

当你找到有效的调用后,可以把那个按钮的 sel.click 替换成类似下面的代码:

sel.get_eval("window.jQuery('input.bookFlightButton').mouseup()")

...这样就可以通过Selenium来触发了。

撰写回答