【问题标题】:java Selenium Chrome - click button [closed]java Selenium Chrome - 单击按钮[关闭]
【发布时间】:2018-02-26 10:30:34
【问题描述】:

下午好!

我想创建一个至尊机器人。我已经尝试单击“添加到购物篮”按钮,但它不起作用。

我需要帮助!

来自至尊方面的源码:

Screenshot from the sourcecode

我的代码:

driver.findElement(By.xpath("//button[@value='add to basket']")).click();

感谢您的帮助!

【问题讨论】:

  • 您是自己指定 Xpath 路径还是使用元素检查器中 chrome 给定的对象的 Xpath? eBay 上一个类似的示例按钮给了我以下选择器://input[@value="Find"],所以它甚至可能不是一个按钮。
  • 也不行
  • 请阅读为什么screenshot of HTML or code or error is a bad idea。考虑使用基于格式化文本的相关 HTML、代码试验和错误堆栈跟踪来更新问题。
  • 在元素检查器中选择要单击的按钮,右键单击它>复制>复制Xpath。然后在您的 Selenium 代码中使用此路径。如果它也不起作用,请确保您正在遍历正确的父容器。

标签: java google-chrome selenium button click


【解决方案1】:

尝试使用 xpath 作为:

//input[@value='add to basket']

【讨论】:

  • 不起作用:(
  • WebDriverWait 等待 = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.xpath("//fieldset[@id='add-remove-button']/input")))).click();
【解决方案2】:

使用JavascriptExecutor,

WebElement element = driver.findElement(By.xpath("//button[@value='add to basket']"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);

【讨论】:

    【解决方案3】:

    您可以遍历所有按钮并验证名称:

    input_fields = webdriver.find_elements_by_tag_name('input')
    for field in input_fields:
        if field.get_attribute('name') == 'commit'
            field.click()
    

    编辑:错误,我用python写了答案,但逻辑仍然适用于Java,只需要更改语法。

    【讨论】:

      猜你喜欢
      • 2013-05-07
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 2022-01-11
      • 2014-01-02
      • 2021-03-29
      相关资源
      最近更新 更多