Selenium Python sel.click("css=input.smthg")?
我正在用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来触发了。