这是我尝试点击的按钮:
<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;
是否有不同的方法可以点击这些类型?
答案 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'))