0

我需要与包含以下 html 代码的页面进行交互:

 <a data-refineby="customDateRange" class="toggleControl flushToggleControl navToggleControl">Specific Dates</a>
        <div class="navTabDropDown customDateFilter">
            <form>
                <div>
                    <span class="dateLabel">From:</span>
                    <input type="text" name="fromMonth" class="month" id="fromMonth" value="MM" maxlength="2" /> / 
                    <input type="text" name="fromDay" class="day" id="fromDay" value="DD" maxlength="2" /> / 
                    <input type="text" name="fromYear" class="year" id="fromYear" value="YYYY" maxlength="4" />
                </div>
                <div>
                    <span class="dateLabel">To:</span>
                    <input type="text" name="toMonth" class="month" id="toMonth" value="MM" maxlength="2" /> / 
                    <input type="text" name="toDay" class="day" id="toDay" value="DD" maxlength="2" /> / 
                    <input type="text" name="toYear" class="year" id="toYear" value="YYYY" maxlength="4" />
                </div>
                <div class="customFilterFooter">
                    <a class="applyCustomFilter">Refine Search</a>
                </div>
            </form>
        </div>
    </li>

这是我正在使用的(Python)代码:

# import selenium, start webdriver, etc

browser.find_element_by_id("newSearchQueryTop").send_keys("foo")
browser.find_element_by_css_selector("button.button").click()
browser.find_element_by_link_text("Specific Dates").click()
browser.find_element_by_id("fromMonth").send_keys("01")
browser.find_element_by_id("fromDay").send_keys("01")
browser.find_element_by_id("fromYear").send_keys("1992")
browser.find_element_by_id("toMonth").send_keys("12")
browser.find_element_by_id("toDay").send_keys("31")
browser.find_element_by_id("toYear").send_keys("1992")
browser.find_element_by_link_text("Refine Search").click()

网络驱动程序正确填写了日/月/年字段,但无法找到“优化搜索”按钮。这是我得到的:

Traceback (most recent call last):
  File "nyt.py", line 170, in <module>
    nyt(1, years1, 1, path)
  File "nyt.py", line 149, in nyt
    browser.find_element_by_link_text("Refine Search").click()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 246, in find_element_by_link_text
    return self.find_element(by=By.LINK_TEXT, value=link_text)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 680, in find_element
    {'using': by, 'value': value})['value']
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 165, in execute
    self.error_handler.check_response(response)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 164, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: u'Unable to locate element: {"method":"link text","selector":"Refine Search"}' ; Stacktrace: 
    at FirefoxDriver.prototype.findElementInternal_ (file:///var/folders/CQ/CQ1pELFuECu0jHex28Y-tU+++TI/-Tmp-/tmpOR8AB5/extensions/fxdriver@googlecode.com/components/driver_component.js:8899)
    at fxdriver.Timer.prototype.setTimeout/<.notify (file:///var/folders/CQ/CQ1pELFuECu0jHex28Y-tU+++TI/-Tmp-/tmpOR8AB5/extensions/fxdriver@googlecode.com/components/driver_component.js:396) 

“细化搜索”按钮不在子框架内,也没有隐藏,所以我不明白为什么 webdriver 找不到它。我试过time.sleep(30)了,但这并没有改变任何东西。有什么想法吗?

(Mac OS X 10.6.8、Python 2.7.5、Selenium 2.35、Firefox 23.01)

4

1 回答 1

1

试试下面的:

browser.find_element_by_xpath("//a[@class='applyCustomFilter' and text() = 'Refine Search']").click()

XPATH Tester

于 2013-08-27T19:13:24.980 回答