Ошибка записи xpath для динамической веб-таблицы внутри iframe

Я использую клонирование объекта Automation Anywhere для определения значения внутри динамической веб-таблицы.
Для выбора этого значения я проверяю, не

  1. Столбец с датой загрузки больше или равен определенному значению.

  2. Столбец с названием типа документа содержит определенный текст.

Если два вышеуказанных условия соблюдены, я должен выбрать соответствующий Id # в столбце и щелкнуть по нему.

Я хочу написать xpath для того же самого с проверками валидации в качестве переменных.

Но у меня проблема с идентификацией имен столбцов с помощью тегов td.

Я могу писать до этого Xpath:

//table[starts-with(@class,"whiteBg")]/tbody/tr[td]

который идентифицирует все значения td, но если я помещаю

//table[starts-with(@class,"whiteBg")]/tbody/tr[td/a[@id,'idvalue']]

где значение id = "contentplaceHolderMain_rptviewdocs_hdrInkuploadedTime" или любое другое значение id в этом отношении не работает.

Для td с диапазоном я заменил их на span, а также попробовал использовать имена столбцов и содержать теги.

Все еще не работает. Я прилагаю html-код к тому же. Если кто-нибудь может помочь мне определить, что я делаю неправильно. Пожалуйста, сделай.

Я хочу написать что-то вроде //table/tr/td[upload Date > or ="my variable" ] и td[Doc Type Name = "my Variable"]/td[doc Id].

<table cellpadding="2" cellspacing="0" width="100%" class="whiteBg" border="0">
                                    
    <tbody><tr class="tableSubHead" style="padding: 0px 4px 0px 4px;">
        <td>
            <a id="contentPlaceHolderMain_rptviewdocs_hdrlblId" class="anchorBlueBold8" href="javascript:__doPostBack('ctl00$contentPlaceHolderMain$rptviewdocs$ctl00$hdrlblId','')">&nbsp;ID #</a>
        </td>
        <td>
            <a id="contentPlaceHolderMain_rptviewdocs_hdrlbltypeName" class="anchorBlueBold8" href="javascript:__doPostBack('ctl00$contentPlaceHolderMain$rptviewdocs$ctl00$hdrlbltypeName','')">Document Type Name</a>
        </td>
        <td>
            <a id="contentPlaceHolderMain_rptviewdocs_hdrlblInRefPkg" class="anchorBlueBold8" href="javascript:__doPostBack('ctl00$contentPlaceHolderMain$rptviewdocs$ctl00$hdrlblInRefPkg','')">In Referral Pkg?</a>
        </td>
        
            <td>
                <span id="contentPlaceHolderMain_rptviewdocs_hdrlblapprovalstatus" class="content">Approval Status</span>
            </td>
        
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_hdrlblpdfsize" class="content">PDF Size (in Bytes)</span>
        </td>
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_hdrlblNoOfPages" class="content">Number Of Pages</span>
        </td>
        <td>
            <a id="contentPlaceHolderMain_rptviewdocs_hdrlnkUploadedTime" class="anchorBlueBold8" href="javascript:__doPostBack('ctl00$contentPlaceHolderMain$rptviewdocs$ctl00$hdrlnkUploadedTime','')">Upload Date Time</a>
        </td>
        <td>
            <a id="contentPlaceHolderMain_rptviewdocs_hdrlblUploadedby" class="anchorBlueBold8" href="javascript:__doPostBack('ctl00$contentPlaceHolderMain$rptviewdocs$ctl00$hdrlblUploadedby','')">Uploaded By</a>
        </td>
        <td colspan="2" align="center">
            <span id="contentPlaceHolderMain_rptviewdocs_hdrlblAction2" class="content">Action</span>
        </td>
    </tr>

    <tr class="sdod" align="left" style="padding: 4px;">
        <td>
            &nbsp;
            <a onclick="window.open('DMCViewDocsDownload.aspx?QryAdapterKeys=Eq8ctIKSF7iDsUkLJB8IwOamBj7OjW4h56RKsZ10/0kCNxTNFhcpUiZJ6psrfQd0d5pwoCs2YDkMFWq0Zb119Gtf1fEBBKxDDvKMOSVWBMr/WXzQkdWUA3f+38ZXnLCGPW8BTpgp96gAmy6golmawHaKxFRcqIel90VwfZQ1K3lCOtqDlospiZMt54qF31dN8Kys3m6UyPcBQUWpL57/iw==RZy62fPm5bAaRcEWPBUoIt5qxjfbAFFSxzHT6oY5bL8=', 'ViewDocs','height=450,width=500,scrollbars=yes,resizable=yes');return false;" id="contentPlaceHolderMain_rptviewdocs_lblId_0" class="anchorBlueBold8" href="javascript:__doPostBack('ctl00$contentPlaceHolderMain$rptviewdocs$ctl01$lblId','')">12345678</a>
        </td>
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lbltypeName_0" class="content">Test Data finder</span>
        </td>
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lblInRefPkg_0" class="content">Y</span>
        </td>
        
            <td>
                <span id="contentPlaceHolderMain_rptviewdocs_lblapprovalstatus_0" class="content">N/A</span>
            </td>
        
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lblfilesize_0" class="content">00000</span>
        </td>
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lblnoofpages_0" class="content">12</span>
        </td>
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lbluploadeddatetime_0" class="content">11/23/2015 09:38 AM</span>
        </td>
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lbluploadby_0" class="content">John</span>
        </td>
        <td colspan="2" align="center">
            <table cellpadding="3" cellspacing="0" border="0" align="center" style="width: 60px">
                <tbody><tr>
                    <td style="border: none" align="right">
                        
                    </td>
                    <td style="border: none" align="right">
                        
                    </td>
                </tr>
            </tbody></table>
        </td>
    </tr>

    <tr class="odd" style="padding: 4px;" align="left">
        <td>
            &nbsp;
            <a onclick="window.open('DMCViewDocsDownload.aspx?QryAdapterKeys=snizu1LROpZWar7u9Y+DYUDu6GDgZJX4M8SBF6MrGbxEgrh4WoiKBFRFX2i/sKJ06UHdHUq11MSKsOp9dBHNjdlCK/l1poGCZxgXEzf8ejcHVGHy3t5Rvi6i7FdWXUKuXMcS8nwh+GlPheaxS62k54O8DVay8bn+1IE8OHnGVt6t2mUqkjB/H/NpNU8OKY/bwxjz4mERH9udeUnOZEuX5w==k8GkZ8QbApXofjvbTsmSaM2r6l10ba8orWK0r4IJm2Y=', 'ViewDocs','height=450,width=500,scrollbars=yes,resizable=yes');return false;" id="contentPlaceHolderMain_rptviewdocs_lblId_1" class="anchorBlueBold8" href="javascript:__doPostBack('ctl00$contentPlaceHolderMain$rptviewdocs$ctl02$lblId','')">888888</a>
        </td>
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lbltypeName_1" class="content">Test Data2</span>
        </td>
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lblInRefPkg_1" class="content">N</span>
        </td>
        
            <td>
                <span id="contentPlaceHolderMain_rptviewdocs_lblapprovalstatus_1" class="content">N/A</span>
            </td>
        
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lblfilesize_1" class="content">222333</span>
        </td>
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lblnoofpages_1" class="content">52</span>
        </td>
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lbluploadeddatetime_1" class="content">11/23/2015 06:08 AM</span>
        </td>
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lbluploadby_1" class="content">Test Automation</span>
        </td>
        <td colspan="2" align="center">
            <table cellpadding="3" cellspacing="0" border="0" align="center" style="width: 60px">
                <tbody><tr>
                    <td style="border: none" align="right">
                        
                    </td>
                    <td style="border: none" align="right">
                        
                    </td>
                </tr>
            </tbody></table>
        </td>
    </tr>

    <tr class="sdod" align="left" style="padding: 4px;">
        <td>
            &nbsp;
            <a onclick="window.open('DMCViewDocsDownload.aspx?QryAdapterKeys=XxsvvVtOjq1YUIOtwubnsZen5QvczUFxgfu/qzqnX5hLQXTDLrXH+0L1aPm8kTe/thIfvqa00sQqzh3EV8Of1HGWSVyzVHh4VV/RHBN3CAX3kVe7UUrRhpK4bcZpdKlKIbVe3AAvDnClHLLSle3sTsXtJyCJrOv2w4cFxeMPiHxAZcKsFHCBREG0Zl0ySa+nKSG8qf1EKDFQYdkkbqIp2g==4AfEni+qTI+I0xHagckSDPN5m+sFKN9gSG2PPafAry4=', 'ViewDocs','height=450,width=500,scrollbars=yes,resizable=yes');return false;" id="contentPlaceHolderMain_rptviewdocs_lblId_2" class="anchorBlueBold8" href="javascript:__doPostBack('ctl00$contentPlaceHolderMain$rptviewdocs$ctl03$lblId','')">444444</a>
        </td>
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lbltypeName_2" class="content">Test Review</span>
        </td>
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lblInRefPkg_2" class="content">Y</span>
        </td>
        
            <td>
                <span id="contentPlaceHolderMain_rptviewdocs_lblapprovalstatus_2" class="content">N/A</span>
            </td>
        
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lblfilesize_2" class="content">1234567</span>
        </td>
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lblnoofpages_2" class="content">7</span>
        </td>
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lbluploadeddatetime_2" class="content">11/18/2015 05:52 PM</span>
        </td>
        <td>
            <span id="contentPlaceHolderMain_rptviewdocs_lbluploadby_2" class="content">Jane</span>
        </td>
        <td colspan="2" align="center">
            <table cellpadding="3" cellspacing="0" border="0" align="center" style="width: 60px">
                <tbody><tr>
                    <td style="border: none" align="right">
                        
                    </td>
                    <td style="border: none" align="right">
                        
                    </td>
                </tr>
            </tbody></table>
        </td>
    </tr>


person Rpadevs    schedule 26.07.2019    source источник


Ответы (1)


Это немного запутано, но если я правильно понимаю, что вам нужно, давайте предположим, что дата загрузки вашего теста 10111999, а имя типа вашего документа Test Review, тогда это выражение xpath

//table[starts-with(@class,"whiteBg")]/tbody/tr//span[number(substring-before(translate(.[contains(@id,"contentPlaceHolderMain_rptviewdocs_lbluploadeddatetime")],'/',''), ' ')) > 10111999]/../../td/span[contains(@id,"contentPlaceHolderMain_rptviewdocs_lbltypeName")][text()='Test Review']/../preceding-sibling::td/a

выберут

444444

который является iID # для этого документа.

person Jack Fleeting    schedule 26.07.2019
comment
Спасибо. Никогда бы не подумал написать это так. Я думаю, что этот заполнитель '/', '' преобразует его в обычные цифры. так что с 18.11.2015 по 11182015. Но поскольку мы сравниваем даты, то первые две цифры - месяц. Допустим, наша дата в таблице - 10182015, а указанное нами значение - 11182014. 18.10.2015 после 11.08.2014. Но когда мы преобразуем их в цифры, мы не получим того же значения. Возможно, я раньше неправильно истолковывал себя, но есть ли способ сравнить даты с этой проблемой. - person Rpadevs; 26.07.2019
comment
Моя цель - найти дату в веб-таблице, которая совпадает или находится после переменной даты. Итак, если моя заданная дата ввода - 25.07.2019. Я хочу проверить даты, доступные в веб-таблице, в тот же день или после 25.07.2019. - person Rpadevs; 26.07.2019
comment
Итак, если веб-таблица 26.07.2019, я хочу ее найти, но если веб-таблица имеет 26.08.2018, я хочу ее игнорировать. Есть ли способ сделать это? Я могу указать свою входную переменную как дату месяца и год отдельно. Можем ли мы написать так, чтобы сначала сравнивать годы, а затем даты. - person Rpadevs; 26.07.2019
comment
.Чтобы найти дату загрузки только с именем Doc Id, этот xpath, похоже, не работает. Что не так с этим xpath? //table[starts-with(@class,"whiteBg")]/tbody/tr//span[contains(@id,"contentPlaceHolderMain_rptviewdocs_lbltypeName")][text()='TestData2']/../../td/span/[contains(@id,"contentPlaceHolderMain_rptviewdocs_lbluploadeddatetime")] - person Rpadevs; 26.07.2019
comment
@Rpadevs - что касается вашего последнего комментария, правильный xpath - //table[starts-with(@class,"whiteBg")]/tbody/tr//span[contains(@id,"contentPlaceHolderMain_rptviewdocs_lbltypeName")]/../preceding-sibling::td/a. Я отвечу на ваши вопросы о свидании в других комментариях. - person Jack Fleeting; 26.07.2019
comment
Флеминг. Спасибо. Но на самом деле я пытался получить все даты загрузки, если задано text()='TestData2'. Поэтому я могу сравнивать каждую дату с моей входной переменной в самом коде, а не в xpath. Я пробовал //table[starts-with(@class,"whiteBg")]/tbody/tr//span[contains(@id,"contentPlaceHolderMain_rptviewdocs_lbltypeName")][text()='Title Search - TSG']/../../td/a[@id = "contentPlaceHolderMain_rptviewdocs_lbluploadeddatetime"] и - person Rpadevs; 26.07.2019
comment
//table[starts-with(@class,"whiteBg")]/tbody/tr//span[contains(@id,"contentPlaceHolderMain_rptviewdocs_lbltypeName")][text()='Title Search - TSG']/../td/span[contains(@id,"contentPlaceHolderMain_rptviewdocs_lbluploadeddatetime")]/a но безуспешно. - person Rpadevs; 26.07.2019
comment
@Rpadevs - я действительно пытался получить все даты загрузки, если задан text () = 'TestData2': в строке, содержащей TestData2, есть только одна дата загрузки. - person Jack Fleeting; 26.07.2019
comment
Флеминг - это я написал. Я думаю, это даст нам все даты загрузки с Testdata в качестве текста документа. Теперь я пытаюсь найти, могу ли я вставить диапазон дат для даты загрузки ... Если есть лучший способ его записать. Пожалуйста, порекомендуйте. //table[starts-with(@class,"whiteBg")]/tbody/tr//span[contains(@id,"contentPlaceHolderMain_rptviewdocs_lbltypeName")][text()='TestData2']/../following-sibling::td/span[contains(@id,"contentPlaceHolderMain_rptviewdocs_lbluploadeddatetime")]'. Это должно дать нам все даты загрузки с соответствующим текстом `Test data2`, если таковой имеется, верно? - person Rpadevs; 26.07.2019