Я пытаюсь сделать некоторые базовые вещи с Selenium, и я пытаюсь найти элемент по «тексту», поскольку все мои элементы либо генерируются динамически, либо имеют общее имя и значение атрибута.
я хотел бы добраться до «SelTest» в следующем div, вот один блок:
<div ng-mouseenter = "hover=true" ng-mouseleave = "hover=false" class = "object workspace" ng-repeat = "workspace in workspaces | filter:{'workspace_title':workspaceFilter, 'is_archived':false} | orderBy: 'workspace_title'" ui-sref = "main.workspace({workspaceId: workspace.id})" href = "#!/workspace/a43d95fa24acbfc4757ba86a4d8dec22">
<i class = "mdi mdi-folder"></i>
<div class = "title">SelTest</div>
<div class = "desc"></div>
<div class = "tools ng-hide" ng-show = "hover" style = "">
<button type = "button" ng-click = "workspace.toggleArchive();$event.stopPropagation();" class = "btn btn-default btn-xs">
<span>Archive</span>
</button>
</div>
</div>
в то время как остальная часть кода имеет такое же точное имя и значение атрибута.
а вот и большая картина:
Есть ли способ добраться до Селтест?
вы не можете получить элемент, используя content = driver.find_element_by_class_name('SetTest');
@DebanjanB, я пытаюсь получить элемент с текстом как SetTest
@VSB, нет, потому что .find_element_by_class_name не является приемлемым аргументом
@Ali Нет элемента с текстом как Сеттест, но есть один элемент с текстом как Селтест. Я обновил ваш вопрос соответственно. Не стесняйтесь отменить редактирование, если оно неверно.
@ChristopherMoore HTML сломался из-за плохого редактирования, я возвращаюсь назад.




Чтобы найти элемент с текстом как Селтест, вам нужно вызвать WebDriverWait для visibilityOfElementLocated(), и вы можете использовать любой из следующих Стратегии поиска:
cssSelector:
WebElement ele = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.object.workspace[ng-repeat^='workspace in workspaces'][href*='workspace'] div.title")));
xpath:
WebElement ele = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='object workspace' and starts-with(@ng-repeat, 'workspace in workspaces')][contains(@href, 'workspace')]//div[@class='title' and text()='SelTest']")));
Я понятия не имел об ExpectedConditions, которые великолепны, и о том, что xpath ХОТЯ! большое спасибо. ваш ответ заставил меня понять, что мне нужно снова просмотреть свои коды. Спасибо
Вы пытаетесь извлечь текст Сеттест или пытаетесь идентифицировать элемент с текстом как Сеттест?