Мне нужно найти элемент:
//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», потому что у Selenium нет экстрактора xpath. Я предполагаю, что для каждого из них я мог бы получать родительский элемент, пока не добрался до // html или // iframe, но это заняло бы много времени.
Какие-либо предложения? Это с Java и Selenium
У вас есть 2 элемента, один под iframe, а другой нет. Selenium может найти элемент под iframe, только если вы на него переключились. Ваш селектор должен видеть только 1 элемент, иначе у вас возникнет другая проблема. Поделитесь html.
См. stackoverflow.com/questions/23847038/…; stackoverflow.com/questions/41418413/…
Возможный дубликат Как наложить iframe и разрешить переход по клику
Спасибо. Я думаю, что меня смущало, так это то, что с Chrome в Inspect, когда я ввел xpath, он также нашел те, которые находятся под iframe, но похоже, что driver.find () не будет?




Это похоже на XY проблема. Вместо того, чтобы просить помощи в решении проблемы, отредактируйте свой вопрос и спросите о реальной проблеме. Что ты пытаешься сделать?