如何通过Selenium通过它的onclick属性来定位javascript元素?

时间:2016-05-10 03:29:17

标签: javascript python selenium

我正在使用一个网页,其中包含许多javascript按钮,这些按钮的编写如下:

<a href="javascript:;" onclick="addtocart('888%20B0007VBRUE%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20',$(this),0)" class="btn btn-lblue pull-right">

Selenium可以执行javascript,但我不太确定如何格式化javascript查询以触发单独的购买按钮。我试过了:

driver.execute_script("document.getElementById("test").onclick = "addtocart('888%20B0007VBRUE%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20',$(this),0)").click()

但这给了我错误Message: document.getElementById(...) is null。我怎样才能改变我试图让它发挥作用的东西?

1 个答案:

答案 0 :(得分:2)

这是因为您尚未在test标记中添加<a>的ID。此外,通常不建议根据其onclick处理程序的值查找元素。

固定代码:

<a href="javascript:;" id="test" onclick="addtocart('888%20B0007VBRUE%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20',$(this),0)" class="btn btn-lblue pull-right">

此外,您需要在driver.execute脚本中切换" '之一,因为每个"都会终止前面的字符串。

示例:

driver.execute_script('document.getElementById("test"),$(this),0)').click()