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()

Webdriver は日/月/年のフィールドを正しく入力しますが、[検索を絞り込む] ボタンを見つけることができません。ここに私が得るものがあります:

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) 

「検索の絞り込み」ボタンはサブフレーム内になく、非表示でもないため、Web ドライバーがそれを見つけられない理由がわかりません。試してみ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 に答える