无法使用selenium单击type =按钮,但适用于type = submit

时间:2015-08-27 19:46:53

标签: html python-2.7 dom selenium-webdriver

这是我尝试点击的按钮:

<button class="button-text-like marg-l-0 float-l desktop-only remove-button" data-bind="click: $root.removeCartItem" type="button"> <i class="gicon-cross"></i> Remove </button>

我找到并使用以下xpath单击该按钮:

driver.find_element_by_xpath('//*[@id="mini-cart-slider"]/li[1]/div/div/div[2]/button').click()

然而,当我这样做时,我得到了例外。异常的类型是

ElementNotVisibleException

可能会发生这种情况,因为单击该删除按钮时应删除该元素。但是,如果我忽略此异常,则该项似乎不会从购物车中删除。

我正在使用firefox webdriver。当我在具有以下标记的另一个按钮上执行类似的功能时,它可以正常工作:

<button style="display: inline-block;" type="submit" class="add-cart button wgrid-3w6 wgrid-4w4 marg-l-0">Add to cart</button>

此按钮之间的唯一区别是它是 &#34;提交&#34; 类型,而不起作用的按钮是类型 &#34;按钮&#34;

是否有不同的方法可以点击这些类型?

2 个答案:

答案 0 :(得分:3)

我的猜测是你的xpath太脆了。您的xpath在很大程度上取决于非常具体的路径,任何更改(即使在显示顺序中)都可能会破坏它。

尝试一些不那么脆弱的东西:

driver.find_element_by_css_selector('#mini-cart-slider button')

找到删除按钮...

driver.find_element_by_css_selector('#mini-cart-slider button.remove-button')

或您的添加到购物车按钮...

driver.find_element_by_css_selector('#mini-cart-slider button.add-cart')

答案 1 :(得分:-1)

这是通过使用execute_script执行模拟点击来解决的。语法如下:

driver.execute_script('arguments[0].click()',driver.find_element_by_xpath('//*[@id="mini-cart-slider"]/li[1]/div/div/div[2]/button'))