Selenium [已解决] 选择下拉列表的时候遇到问题无法定位,求帮忙

梁慧玲 · 2016年07月13日 · 最后由 xi 回复于 2017年01月09日 · 2924 次阅读

我的测试代码如下:

def test_12(self):
        self.browser.find_element_by_link_text(u'批改结果').click()
        time.sleep(2)
        area = self.browser.find_element_by_id("select-area")
        time.sleep(1)
        # Select(area).select_by_value('010')
        Select(area).select_by_index(1)
        time.sleep(2)

用 firebug 查看元素如下图

执行后的报错如下:

Error
Traceback (most recent call last):
  File "C:\E\Users\Administrator\PycharmProjects\IPSWeb\Test\Test_IPSTutor\TestScripts.py", line 68, in test_12
    area = self.browser.find_element_by_id("select-area")
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 266, in find_element_by_id
    return self.find_element(by=By.ID, value=id_)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 744, in find_element
    {'using': by, 'value': value})['value']
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 233, in execute
    self.error_handler.check_response(response)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"id","selector":"select-area"}
  (Session info: chrome=51.0.2704.103)
  (Driver info: chromedriver=2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4),platform=Windows NT 10.0 x86_64)

之前有别的下拉选择我都定位成功了啊,这个不知道为什么一直报错?selector 不能通过 id 定位么?改 css 什么的也都不对啊,望牛人帮我看看问题出在哪里了

共收到 9 条回复 时间 点赞

#1 楼 @mads 查过各种资料,试过 id,css,xpath 都不行,是不是有什么坑啊

def test_12(self):
        self.browser.find_element_by_link_text(u'批改结果').click()
        time.sleep(2)
        # area = self.browser.find_element_by_id("select-area")
        area = self.browser.find_element_by_xpath('//select[@id="select-area"]')
        time.sleep(1)
        Select(area).select_by_value('010')
        # Select(area).select_by_index(1)
        time.sleep(2)

#2 楼 @nancy2896 包括你 import 的模块也贴出来

#3 楼 @mads 好的

# -*- encoding:utf8 -*-
__author__ = 'lhl'

from selenium import webdriver
import time
import unittest
# from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import Select


class TestScripts(unittest.TestCase):

    def setUp(self):
        self.browser = webdriver.Chrome()
        self.browser.get('http://wldts.speiyou.com/tutor/login.html')
        time.sleep(2)
        self.browser.maximize_window()
        time.sleep(2)
        self.__init_login_activity()

    def tearDown(self):
        self.browser.quit()

    def __init_login_activity(self):
        self.browser.find_element_by_css_selector('input.username').send_keys(u'辅导老师')
        time.sleep(1)
        self.browser.find_element_by_css_selector('input.password').send_keys('123456')
        time.sleep(1)
        self.browser.find_element_by_css_selector('button.login').click()
        time.sleep(1)

    #  选择区域,选择时间点查询
    def test_11(self):
        time.sleep(2)

        Select(self.browser.find_element_by_id('select-area')).select_by_value("010")
        # self.browser.find_element_by_id('select-area').find_element_by_css_selector('option[value="010"]').click()
        time.sleep(2)
        self.browser.find_element_by_id('select-starttime').click()
        time.sleep(1)
        self.browser.find_element_by_css_selector('css=td.WwdayOn').click()

        self.browser.find_element_by_id('css=div.query-btn').click()

    def test_12(self):
        self.browser.find_element_by_link_text(u'批改结果').click()
        time.sleep(2)
        # area = self.browser.find_element_by_id("select-area")
        area = self.browser.find_element_by_xpath('//select[@id="select-area"]')
        time.sleep(1)
        Select(area).select_by_value('010')
        # Select(area).select_by_index(1)
        time.sleep(2)

area = self.browser.find_element_by_xpath(“//select[@id=‘select-area’]”) 用这个试试

是要定位区域吗,选择上海北京是吗
xpath=//option[text()='上海']
试试

#5 楼 @mads 找到问题了,问我们开发了说,这个标签打开的是一个新页面,在 iframe 中嵌套着呢,
加了一句这个好使了 self.browser.switch_to_frame('iframeTransfer')

不过还是非常谢谢你

@nancy2896 查看这篇终于发现了问题,亏我还是个开发。。。。。。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册