51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2159|回复: 10
打印 上一主题 下一主题

元素定位问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-10-26 15:01:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
<select id="selectName" class=" " data-placeholder="请选择类型" name=""  >
< option value="1">请选择类型</option>
< option value="2">百度</option>
< option value="3">支付宝</option>
< /select>
如果要选择百度或者支付宝其中一个值该怎么办
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2016-10-26 15:05:09 | 只看该作者
selenium webdriver,自动化测试
回复 支持 反对

使用道具 举报

  • TA的每日心情
    慵懒
    2021-12-24 13:41
  • 签到天数: 314 天

    连续签到: 1 天

    [LV.8]测试军长

    3#
    发表于 2016-10-26 16:12:39 | 只看该作者
    可以试试下面的语句
    Java语言开发
    #选择百度
    WebElement typeOption=driver.findElement(By.cssSelector("#selectName option[value='2']"));
    typeOption.click();

    #选择支付宝
    WebElement typeOption=driver.findElement(By.cssSelector("#selectName option[value='3']"));
    typeOption.click();

    Python语言开发
    #选择百度
    typeOption=driver.find_element_by_id("selectName")
    typeOption.find_element_by_xpath("//option[@value='2']").click()

    #选择支付宝
    typeOption=driver.find_element_by_id("selectName")
    typeOption.find_element_by_xpath("//option[@value='3']").click()
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2024-7-8 09:00
  • 签到天数: 943 天

    连续签到: 1 天

    [LV.10]测试总司令

    4#
    发表于 2016-10-26 16:18:48 | 只看该作者
    http://www.cnblogs.com/qingchunjun/p/4208159.html
    定位方法都在这里自己看看  
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2016-10-27 11:10:47 | 只看该作者
    选择元素时selectByValue、selectByIndex、selectByVisibleText都用过,但就是选不了元素啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-11-7 16:44
  • 签到天数: 290 天

    连续签到: 1 天

    [LV.8]测试军长

    6#
    发表于 2016-10-27 13:50:07 | 只看该作者
    aaallll 发表于 2016-10-27 11:10
    选择元素时selectByValue、selectByIndex、selectByVisibleText都用过,但就是选不了元素啊

    我只知道python+selenium的处理方法:
    页面主要通过“display:none”来控制整个下拉框不可见。
    这个时候如果直接操作这个下拉框,就会提示:

    sel = driver.find_element_by_tag_name('select')
    Select(sel).select_by_value('selectName')

    exceptions.ElementNotVisibleException: Message: element not visible: Element is not currently visible and may not be manipulated

    我们需要通过javaScript修改display的值:
    js = 'document.querySelectorAll("select")[0].style.display="block";'
    driver.execute_script(js)
    sel = driver.find_element_by_tag_name('select')
    Select(sel).select_by_value('selectName')

    执行完这句js代码后,就可以正常操作下拉框了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2016-10-27 14:35:31 | 只看该作者
    运行的时候没有提示任何错误信息,display也不是none,select.getOptions()是可以获取到所有的option,但是选择其中一个就不行,没有任何错误信息
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-11-7 16:44
  • 签到天数: 290 天

    连续签到: 1 天

    [LV.8]测试军长

    8#
    发表于 2016-10-27 14:41:22 | 只看该作者
    aaallll 发表于 2016-10-27 14:35
    运行的时候没有提示任何错误信息,display也不是none,select.getOptions()是可以获取到所有的option,但是 ...

    将选择的界面和html截个图看看~~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2016-10-27 17:09:21 | 只看该作者

    <select id="atomicevent_evnet_type" class="AE_FIELD" name="">
    <option value="">请选择</option>

    <option value="1">MobileNetwork</option>

    <option value="2">SocialNetwork</option>

    <option value="3">Billing</option>

    <option value="4">CRM</option>

    <option value="5">RTSS</option>


    </select>

    //设置事件来源
    webTest.selectItem("2", "//*[@id='atomicevent_evnet_type']");
    public void selectItem(String itemName,String xpath)
            {
                    Select dropDownList = new Select(findElementByXpath(xpath));
                    dropDownList.selectByValue(itemName);
            }

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2016-10-28 17:15:28 | 只看该作者
    最后换个浏览器就可以了
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-15 10:52 , Processed in 0.070054 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表