【问题标题】:Unable to click on date from calendar popup无法从日历弹出窗口中单击日期
【发布时间】:2013-04-16 19:09:27
【问题描述】:

我想从 iframe 内的日历弹出窗口中单击日期。我在下面写了抛出无法找到元素错误的硒代码。请帮助我编写正确的 xpath 或 selenium 代码。我是 Selenium 的新手

硒代码:

WebElement iframe =driver.findElement(By.id("NewsSearchDateToInput_selector_iframe"));

driver.switchTo().frame(iframe);
//clicking on date 3  
driver.findElement(By.xpath("//div[3][@class='daysNumbersStyles']")).click();

错误:无法定位元素“//div[3][@class='daysNumbersStyles']”

HTML标签:

<iframe id="NewsSearchDateToInput_selector_iframe" 
        class="dateTimeSelectorContainerStyle altFlexibleContainer" 
        src="javascript:false;" 
        style="left: 1216px; top: 245px; width: 249px; height: 207px; 
               display: block;"/>

<div class="dateTimeSelectorContainerStyle altFlexibleContainer" 
     style="top: 245px; left: 1216px; display: block;">
  <div class="top">
    <div class="content">
      <div class="dateSelectorHeader">
        <div class="dateSelectorBody">
          <div class="yearMonthSelectorStyle">
            <div id="NewsSearchDateToInput_selector_monthSelector" class="monthSelectorListStyle">
              <div class="daysStyle">
                <div>
                  <div class="daysNumbersDivStyle">
                    <div class="daysNumbersStyles">1</div>
                      <div class="daysNumbersStyles">2</div>
                        <div class="daysNumbersStyles">3</div>

【问题讨论】:

    标签: selenium selenium-webdriver


    【解决方案1】:

    有帮助吗? //div[@class='daysNumbersStyles'][3]

    【讨论】:

    • 它找到两个元素,1 用于 FromDate 日历,2nd 用于 ToDate 日历。
    • 你可以修改一下 //div[@id='FromDate']//div[@class='daysNumbersStyles'][3] 类似的东西
    • 看起来它没有切换到框架本身。 iframe 能够在 xpath 表达式期间找到,但不能在 webdriver 中找到。我们可以通过其他方式切换到框架吗?
    • 发布您的代码,我们可以帮助您。基本上,您需要始终从框架切换到默认框架以构建类似的框架。 driver.switchTo();
    【解决方案2】:

    进入框架后试试这个:

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

    编辑:

    对于 To 选择器:

    driver.findElement(By.xpath("//*[@id='NewsSearchDateToInput_selector_monthSelector']//div[text()='3']").click();
    

    对于 From 选择器:

    driver.findElement(By.xpath("//*[@id='NewsSearchDateFromInput_selector_monthSelector']//div[text()='3']").click();
    

    【讨论】:

    • 非常感谢您的帮助。但是您提到的 xpath 是为 FromDate 找到两个元素,另一个用于 ToDate 日历。我有 FromDate 和 ToDate 的 id,我如何使用 id 和上面的 xpath 来查找元素。 {id='NewsSearchDateFromInput_selector_monthSelector} {NewsSearchDateToInput_selector_monthSelector}
    • 错误无法定位元素。我认为它没有找到 iframe 本身。
    • 谢谢,我找到了解决方案。元素不在 iframe 之下,它在框架之外。
    猜你喜欢
    • 2019-08-08
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    相关资源
    最近更新 更多