【问题标题】:Not able to select the value from the pop-up which is similiar like dropdown -box无法从类似于下拉框的弹出窗口中选择值
【发布时间】:2013-11-12 05:37:15
【问题描述】:

我必须选择类似于下拉框但不是实际下拉框的字段。选择字段在弹出窗口中显示值,其中包含值和子值,我需要选择值。

面临的问题:

无法识别对象,也无法从字段中选择值。

我已尝试让 cssSelector 识别对象:“div[class='mailval'][title='Breast > Both']”。它不工作。

以下是 HTML 代码:

<div class="rowDiv ">
   <label for="bodypart">Body Part</label>
   <div id="bodypart_box_1">
       <div style="position:absolute;left:185px;z-index: 20">
           <ul class="parent">
               <li>
                   <div id="main" class="mailval">events=Object { click=[1]}handle=function()
                       <input id="bodypart_1" class="bodypart" type="text" onfocus="if($(this).hasClass('disabled')){$(this).blur();}" readonly="readonly" value="Select One" name="bodypart_1" title="">
                       <input id="actualBodypart_1" type="hidden" value="Breast" name="actualBodypart_1">
                   </div>
                   <ul id="bodyPartList_1" class="top sub bodyPartList" style="display: none;">olddisplay="block"
                       <li>
                           <div class="mailval fly" title="Breast" originaltitle="Breast">Breast</div>events=Object { click=[1], mouseover=[1]}handle=function()
                           <ul>
                               <li>
                                   <div class="mailval" title="Breast > Both" originaltitle="Breast > NULL > Both">Both</div>events=Object { click=[1], mouseover=[1]}handle=function()
                               </li>
                               <li>
                                   <div class="mailval" title="Breast > Left" originaltitle="Breast > NULL > Left">Left</div>events=Object { click=[1], mouseover=[1]}handle=function()
                               </li>
                               <li>
                                   <div class="mailval" title="Breast > Right" originaltitle="Breast > NULL > Right">Right</div>events=Object { click=[1], mouseover=[1]}handle=function()
                               </li>
                           </ul>
                       </li>
                   </ul>
               </li>
           </ul>
           <div style="clear:both"></div>
       </div>
       <p id="bodypart-error" class="errorMessage ml161px pa ie7ErrorFix" style="top:140px !important"></p>
   </div>

【问题讨论】:

  • 这是一个java问题吗??
  • 我需要使用 java 选择我的 selenium 中的值。
  • 然后添加相关的java代码;否则它是一个 html、css 问题
  • 我使用的是 Java 而不是 Javascipt。
  • “不起作用”到底是什么意思?抛出什么错误?它做什么与不做什么?它会默默地失败吗?炸电脑?上下文很有用。

标签: java html css xpath selenium


【解决方案1】:

在选择器中使用类属性的正确方法是,前面要加上“.”

你的选择器可以改写如下,

div[title='Breast > Both'].mailval

你也可以试试这个选择器,id属性应该前面有“#”

#bodyPartList_1 > div div[title='Breast > Both'].mailval

refer this to learn more about selectors

编辑: 根据您的 html,弹出窗口仅在悬停或单击时出现。这个动作可以使用JavascriptExecuter来执行,

((JavascriptExecutor)driver).executeScript("$('#bodyPartList_1 > .mailval.fly').click();");

现在将显示弹出窗口,您只需选择所需的值...

new WebDriverWait(driver,20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div[title='Breast > Both'].mailval"))).click();

【讨论】:

  • 我使用了 cssSelector = #bodyPartList_1 > div > div[title='Breast > Both'].mailval。它向我显示错误为“无法找到元素:”。你能帮我识别和选择对象吗?
  • 即使我已经尝试过 xpath ="//*[@id='bodyPartList_1']/li[1]/div" 。元素正在被识别但显示错误:“元素当前不可见,因此可能无法与...进行交互”。物体不可见时如何识别?
  • WebElement el = Driver.findElement(By.xpath(OR.getProperty(Object))); >动作生成器=新动作(驱动程序); >builder.moveToElement(el).click(el).perform();
猜你喜欢
  • 2018-12-13
  • 1970-01-01
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多