У меня есть элемент для поиска:
//div[contains(@class, 'bPageBlock')][.//*[.='Agreement Documents']]//div[@class='pbBody']//tr[contains(@class,'dataRow')]//a[text()='View']
Проблема в том, что он находит два элемента, и я хочу только один.Один находится под iframe, а другой нет.Было бы легко, если бы я хотел тот, который находится под iframe.Я мог бы сделать
//iframe///div[contains(@class, 'bPageBlock')][.//*[.='Agreement Documents']]//div[@class='pbBody']//tr[contains(@class,'dataRow')]//a[text()='View']
Однако, как вы, наверное, догадались, я хочу тот, который НЕ находится под iframe.Я не знаю, как указать что-то вроде // не iframe //.И даже если бы я мог, // нашел бы что-то на шаг ниже или выше, что не было бы iframe.
Любые предложения, как найти тот, который НЕ находится под iframe.Все эти корни и пути кажутся одинаковыми друг с другом.Я пробовал много разных вещей.
Если вы хотите увидеть конкретный iframe:
<iframe frameborder="0" id="RLPanelFrame" name="RLPanelFrame" src="/emptyHtmlDoc.html" title="Hidden Frame - Ignore" style="height: 176px;"></iframe>
Тогда под ним находится множество подразделений с автоматически сгенерированными бессмысленными идентификаторами.
Не думаю, что смогу найти каждого из них с помощью driver.find (), получить полный xpath и проверить «iframe», потому что селен не имеет экстрактора xpath.Я предполагаю, что для каждого я мог бы продолжать получать родителя, пока я не попал бы // html или // iframe, но это заняло бы много времени.
Есть предложения?Это с Java и Selenium