Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要在使用Java的SeleniumWebDriver中使用XPath选择特定元素_Selenium_Xpath_Selenium Webdriver_Webdriver - Fatal编程技术网

需要在使用Java的SeleniumWebDriver中使用XPath选择特定元素

需要在使用Java的SeleniumWebDriver中使用XPath选择特定元素,selenium,xpath,selenium-webdriver,webdriver,Selenium,Xpath,Selenium Webdriver,Webdriver,我有个问题,就是找不到答案。我通常擅长在这个意大利面数字代码中选择特定元素。这次我被难倒了。这是代码 <div id="widget_dijit_form_DateTextBox_0_dropdown" class="dijitPopup dijitCalendarPopup" style="visibility: visible; top: 179.55px; z-index: 1000; left: 217.9px; right: auto; display: none;" role=

我有个问题,就是找不到答案。我通常擅长在这个意大利面数字代码中选择特定元素。这次我被难倒了。这是代码

<div id="widget_dijit_form_DateTextBox_0_dropdown" class="dijitPopup dijitCalendarPopup" style="visibility: visible; top: 179.55px; z-index: 1000; left: 217.9px; right: auto; display: none;" role="presentation" dijitpopupparent="dijit_form_DateTextBox_0">
    <table id="dijit_form_DateTextBox_0_popup" class="dijitCalendarContainer dijitCalendar" lang="" cellspacing="0" cellpadding="0" aria-labelledby="dijit_form_DateTextBox_0_popup_year" dojoattachevent="onkeypress: _onKeyPress" role="grid" style="-moz-user-select: none; top: 0px; overflow: hidden; width: 259px; visibility: visible;" dir="" widgetid="dijit_form_DateTextBox_0_popup">
        <thead>
            <tbody class="dijitReset dijitCalendarBodyContainer" dojoattachevent="onclick: _onDayClick, onmouseover: _onDayMouseOver, onmouseout: _onDayMouseOut, onmousedown: _onDayMouseDown, onmouseup: _onDayMouseUp">
                <tr class="dijitReset dijitCalendarWeekTemplate" role="row">
                <tr class="dijitReset dijitCalendarWeekTemplate" role="row">
                <tr class="dijitReset dijitCalendarWeekTemplate" role="row">
                <tr class="dijitReset dijitCalendarWeekTemplate" role="row">
                    <td class="dijitCalendarCurrentMonth dijitCalendarDateTemplate" role="gridcell" dijitdatevalue="1463904000000">
                    <td class="dijitCalendarCurrentMonth dijitCalendarDateTemplate" role="gridcell" dijitdatevalue="1463990400000">
                    <td class="dijitCalendarCurrentMonth dijitCalendarDateTemplate" role="gridcell" dijitdatevalue="1464076800000">
                    <td class="dijitCalendarCurrentMonth dijitCalendarDateTemplate" role="gridcell" dijitdatevalue="1464163200000">
                    <td class="dijitCalendarSelectedDate dijitCalendarCurrentMonth dijitCalendarDateTemplate" role="gridcell" dijitdatevalue="1464249600000" tabindex="0">
                    <td class="dijitCalendarCurrentMonth dijitCalendarDateTemplate" role="gridcell" dijitdatevalue="1464336000000">
                        <span class="dijitCalendarDateLabel">27</span>
                    </td>
...
...                 
<div id="widget_dijit_form_DateTextBox_1_dropdown" class="dijitPopup dijitCalendarPopup" style="visibility: visible; top: 225px; z-index: 1000; left: 217.9px; right: auto;" role="presentation" dijitpopupparent="dijit_form_DateTextBox_1">
    <table id="dijit_form_DateTextBox_1_popup" class="dijitCalendarContainer dijitCalendar dijitCalendarHover dijitHover dijitCalendarFocused dijitCalendarHoverFocused dijitHoverFocused dijitFocused" lang="" cellspacing="0" cellpadding="0" aria-labelledby="dijit_form_DateTextBox_1_popup_year" dojoattachevent="onkeypress: _onKeyPress" role="grid" style="-moz-user-select: none; top: 0px; overflow: hidden; width: 255px; visibility: visible;" dir="" widgetid="dijit_form_DateTextBox_1_popup">
        <thead>
            <tbody class="dijitReset dijitCalendarBodyContainer" dojoattachevent="onclick: _onDayClick, onmouseover: _onDayMouseOver, onmouseout: _onDayMouseOut, onmousedown: _onDayMouseDown, onmouseup: _onDayMouseUp">
                <tr class="dijitReset dijitCalendarWeekTemplate" role="row">
                <tr class="dijitReset dijitCalendarWeekTemplate" role="row">
                <tr class="dijitReset dijitCalendarWeekTemplate" role="row">
                <tr class="dijitReset dijitCalendarWeekTemplate" role="row">
                <tr class="dijitReset dijitCalendarWeekTemplate" role="row">
                    <td class="dijitCalendarCurrentMonth dijitCalendarDateTemplate" role="gridcell" dijitdatevalue="1432454400000">
                    <td class="dijitCalendarCurrentMonth dijitCalendarDateTemplate" role="gridcell" dijitdatevalue="1432540800000">
                    <td class="dijitCalendarCurrentDate dijitCalendarCurrentMonth dijitCalendarDateTemplate" role="gridcell" dijitdatevalue="1432627200000" tabindex="0">
                    <td class="dijitCalendarCurrentMonth dijitCalendarDateTemplate dijitCalendarHoveredDate" role="gridcell" dijitdatevalue="1432713600000">
                        <span class="dijitCalendarDateLabel">27</span>
                    </td>
它返回两个元素。所以,我只需要选择下面的一个

id="dijit_form_DateTextBox_1_popup"
我试过以下方法。。。所有节点都不返回匹配的节点

//*[@id='dijit_form_DateTextBox_1_popup' and contains(@class, 'dijitCalendarCurrentMonth') and contains(., '27')]
//*[@id='dijit_form_DateTextBox_1_popup'][contains(@class, 'dijitCalendarCurrentMonth')][contains(., '27')]
//*[@id='dijit_form_DateTextBox_1_popup'][contains(@class, 'dijitCalendarCurrentMonth') and contains(., '27')]

我做错了什么?

使用
[@id='dijit\u form\u DateTextBox\u 1\u popup']
您正在
表中查找不包含文本的27文本。如果删除,则应找到包含
span
td
,其中包含文本27。而且,由于
td
没有任何
id
属性与
[@id='dijit\u form\u DateTextBox\u 1\u popup']
匹配。 试一试

我还看到包含文本27
span
是该表中唯一的
span
。为了获得更好的性能,我认为您应该尝试以下css

#dijit_form_DateTextBox_1_popup span
//table[@id='dijit_form_DateTextBox_1_popup']//span[contains(.,'27')]
#dijit_form_DateTextBox_1_popup span