【问题标题】:How do I locate the button element and click it如何找到按钮元素并单击它
【发布时间】:2018-12-07 07:43:05
【问题描述】:
<button class="sfc-value sfc-js-change sfc-js-field sfc-ui-btn fo-ui-btn fo-ui-container fo-ui-fixed style-114 layout-156 sfc-js-click" type="button">
    <span class="sfc-caption fo-ui-label style-115 layout-157 fo-ui-no-icon">Next</span>
</button>

我是 selenium 的新手,我对这里的目标类感到困惑。所以任何定位元素的最佳方式。我需要点击这里的按钮。

【问题讨论】:

  • 请参阅:How do I do X? SO 的期望是,提出问题的用户不仅会进行研究以回答他们自己的问题,还会分享研究、代码尝试和结果。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask

标签: selenium-webdriver xpath css-selectors


【解决方案1】:

您使用包含的文本创建一个以 span 开头的 xpath,然后将 -back- 引用到按钮本身:

driver.findElement(By.xpath("//span[text()='Next']/..")).click();

**已编辑

【讨论】:

  • 试过这个并得到这个错误:线程“main”org.openqa.selenium.NoSuchElementException中的异常:没有这样的元素:无法找到元素:{“method”:“xpath”,“selector” :"//span[text()='Next']/button"}
  • 您可能需要显示更多的 HTML。也许跨度在 IFRAME 内。如果您使用的是 Chrome,请按 F12,然后右键单击元素并选择“检查元素”然后在突出显示的 HTML 代码中,右键单击突出显示部分并选择复制 xpath。看看它说了什么。
  • 其实F12部分不是必须的——右键inspect会打开工具。
  • 我的 xpath 是向后的 - 按钮是父级,而不是子级。我已经对 xpath 进行了调整,但我不能 100% 确定它是正确的语法。我并不经常需要引用父节点,所以我不记得确切的语法,但我相当肯定“..”指的是父节点作为快捷方式。
  • 另一种方法是//button[.//span[.='Next']]。我已经对此进行了测试,并且可以正常工作。你的也可以。
【解决方案2】:

想要的元素是一个动态元素,因此要定位该元素并单击它,您必须诱导 WebDriverWait 以使想要的 元素可点击,您可以使用以下 (Java) 解决方案:

  • cssSelector

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("button.sfc-value.sfc-js-change.sfc-js-field.sfc-ui-btn.fo-ui-btn.fo-ui-container.fo-ui-fixed.style-114.layout-156.sfc-js-click>span.sfc-caption.fo-ui-label.style-115.layout-157.fo-ui-no-icon"))).click();
    
  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@class='sfc-value sfc-js-change sfc-js-field sfc-ui-btn fo-ui-btn fo-ui-container fo-ui-fixed style-114 layout-156 sfc-js-click']/span[contains(text(),'Next')]"))).click();
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-30
    • 2021-09-07
    • 2019-09-22
    • 1970-01-01
    • 2021-12-26
    • 2011-02-18
    • 1970-01-01
    相关资源
    最近更新 更多