Вопрос:
Я посмотрел похожие вопросы в stackoverflow и не нашел ничего, что могло бы мне помочь.
У меня есть следующий html-код:
<span class=»help-block ng-scope» translate=»»>Company</span>
Как я могу найти этот элемент (Java)? Я пробовал следующие варианты:
driver.findElement(By.cssSelector(«.help-block.ng-scope»)) driver.findElement(By.xpath(«//span[contains(@class, «Company»)]»))
Я даже попытался просто скопировать xpath из консоли браузера двумя способами:
Во-первых:
driver.findElement(By.xpath(«//*[@id=»ngCloudike»]/body/div[6]/div/div/div/div/form/div[1]/div[6]/span»))
Во-вторых:
driver.findElement(By.xpath(«/html/body/div[6]/div/div/div/div/form/div[1]/div[6]/span»))
Также я попытался найти By.ClassName, но я не могу этого сделать, потому что есть пробелы. Итак, как я могу найти такой элемент?
Лучший ответ:
Попробуйте следующее выражение:
driver.findElement(By.xpath(«//span[text()=’Company’]»))
Если вы получаете NoSuchElementException с этим кодом, попробуйте добавить некоторое время, чтобы ждать, пока элемент не будет присутствовать и не будет видимым:
WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(«//span[text()=’Company’]»))
Если вы получите NoSuchElementException даже с ExplicitWait, целевой элемент может быть расположен внутри iframe. Для обработки элемента внутри iframe:
driver.switchTo().frame(«iframeNameOrId»); driver.findElement(By.xpath(«//span[text()=’Company’]»));