【问题标题】:selenium webdriver select a radio buttonselenium webdriver 选择一个单选按钮
【发布时间】:2016-07-11 12:29:50
【问题描述】:

我需要选择页面上的第一个单选按钮,因为我通过单击链接导航到此页面,所以我做了一个WebDriverWait。请参阅附图,显示下面执行等待的两个单选按钮和代码。

HTML code

WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[value='1']"))).click();

但是我不能点击第一个单选按钮,它会抛出这个错误:

等待 30 秒后超时,等待定位的元素可见。

【问题讨论】:

  • 如果您真的想要一个解决方案,那么您需要共享 HTML 代码而不是屏幕截图...
  • 欢迎来到 Stack Overflow!分享您的研究对每个人都有帮助。告诉我们您尝试了什么以及为什么它不能满足您的需求。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见How to Ask
  • 请发布文本本身,而不是发布文本图像(HTML、代码等)。这将使那些试图通过复制/粘贴来帮助重用文本的人更容易,并将防止将来图像丢失导致问题无用的情况。发布 HTML 或代码时,请确保正确缩进并将其格式化为代码。有关格式化的帮助可以在编辑器右侧的“如何格式化”面板中找到,更详细的帮助包含在底部的链接中。

标签: selenium-webdriver


【解决方案1】:

不要直接单击单选按钮,而是尝试单击单选按钮旁边的标签。因为有时单选按钮不可见。

试试下面的 xpath 表达式,

//input[@value='1']/following-sibling::label

【讨论】:

    【解决方案2】:

    这些不是真正的 HTML 单选按钮,它们只是被格式化(有点)看起来像一个。我会点击标签

    driver.findElement(By.cssSelector("label[for='Form_Form_Role_1']")).click();
    

    或其中一个 SPAN 子节点。

    driver.findElement(By.cssSelector("span.radio-txt.supplier")).click();
    

    其中一个或两个应该可以工作。

    【讨论】:

      【解决方案3】:

      根据https://www.seleniumeasy.com/selenium-tutorials/css-selectors-tutorial-for-selenium-with-examples,您可以尝试使用 .css 选择器

      "input[value=1]"
      

      您也可以使用相对 xpath。试试这个代码:

      WebDriverWait wait = new WebDriverWait(driver, 30);
      WebElement ele = driver.findElement(By.xpath("//input[@value='1']"));
      wait.until(ExpectedConditions.visibilityOf(ele));
      ele.click();
      

      希望这会有所帮助!

      【讨论】:

      • 您的 CSS 选择器中的 1 值周围缺少引号。应该是"input[value='1']"
      • @JeffC,在参考了我帖子中的链接并自己尝试之后,我意识到定位器也可以在没有引号的情况下工作。对我来说听起来同样奇怪。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 2017-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多