【发布时间】:2022-12-04 03:11:16
【问题描述】:
我必须单击一个具有多个相同元素的元素,区分方法是通过“onclick”属性,但我无法单击它。 xpath会怎样?
<button onclick="VxManager.getWidget('DirectQuoteLineItemList_inner').filterApply('4', 'DirectQuoteLineItemList_inner_COL_4');" id="Button" type="button" title="OK" class="VButton default-true">OK</button>
我认为是这样的:
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,'//*[@id="Button"][@title="OK"][@onclick="VxManager.getWidget('DirectQuoteLineItemList_inner').filterApply('4', 'DirectQuoteLineItemList_inner_COL_4');"]))).click()
但这不起作用,页面中还有其他标题、ID 和类。
先感谢您。
【问题讨论】:
-
您是否尝试过从浏览器的开发人员工具中获取 XPath?
-
@MattDMo 这通常是一个非常糟糕的主意,除非您正在尝试学习 XPath。使用该工具生成的 XPath 通常又长又脆,并且不能保证它们在页面上是唯一的。
-
您确定该 ID 在页面上不是唯一的吗?按照 HTML 标准,它应该是……但不幸的是,并不总是……
-
@JeffC 你可以看到你自己这里的 id 是
Button。似乎没有独特的价值...... -
@Prophet 我看到发布的 HTML 的 ID 为“按钮”...但是由于我们没有页面的 HTML,我想知道 OP 是否已验证该 ID 在页面上不是唯一的。如果是,那么整个讨论就没有意义了。
标签: python selenium selenium-webdriver xpath css-selectors