#angular #selenium #selenium-webdriver #angular7 #webdriverwait
#angular #селен #selenium-webdriver #angular7 #webdriverwait
Вопрос:
Я пытаюсь прочитать текст всплывающей подсказки в приложении angular7 через selenium. Но get text возвращает пустой, а javascript executor возвращает null.
Ссылка на изображение DOM, для которого я не могу найти xpath
Но get text возвращает пустой, а javascript executor возвращает null.
Это возвращает пустой
driver().get("https://vmware.github.io/clarity/documentation/v0.12/tooltips");
Wait(3000);
System.out.println(driver().findElement(By.xpath("(//span[@class='tooltip-content'])[2]")).getText());
Это возвращает значение null
System.out.println(driver().findElement(By.xpath("(//span[@class='tooltip-content'])[2]")).getAttribute("value"));
String theTextIWant = ((JavascriptExecutor) driver()).executeScript("return arguments[0].innerHTML;",driver().findElement(By.xpath("(//span[@class='tooltip-content'])[2]")));
Комментарии:
1. Разве это не должно быть («(//span[@class=’tooltip-content’])[2]»), вам не хватает [] вокруг индекса 2
2. почему вы указали круглые фигурные скобки вне xpath
3. @LeyonGudinho («(//span[@class=’tooltip-content’])[2]) в get текст, который является правильным
4. Я думаю, вы неправильно поняли, я хотел сказать, что в вашем вопросе ваш код отображает [2] как 2.
5. .getAttribute(«innerHTML») вместо getText() сделает свое дело. Также упоминается @DebanjanB в ответе. Пожалуйста, примите это.
Ответ №1:
Чтобы извлечь текст всплывающей подсказки Lorem ipsum sit в приложении Angular7 с использованием Selenium, необходимо:
- Вызовите WebDriverWait, чтобы нужный элемент был видимым
- Наведитекурсор мыши на элемент.
- Вызовите WebDriverWait, чтобы желаемая всплывающая подсказка была видимой
- Затем извлеките текст всплывающей подсказки
-
Вы можете использовать следующее решение:
-
Блок кода:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class Angular_ToolTip { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "C:\Utility\BrowserDrivers\chromedriver.exe"); ChromeOptions options = new ChromeOptions(); options.addArguments("start-maximized"); //options.addArguments("disable-infobars"); options.addArguments("--disable-extensions"); WebDriver driver = new ChromeDriver(options); driver.get("https://vmware.github.io/clarity/documentation/v0.12/tooltips"); new Actions(driver).moveToElement(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//h6[text()='Small']//following::div[1]/a[@class='tooltip tooltip-sm']")))).build().perform(); System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//h6[text()='Small']//following::div[1]/a[@class='tooltip tooltip-sm']//following::span[1]"))).getAttribute("innerHTML")); } }
-
-
Вывод на консоль:
Lorem ipsum sit
-
Снимок браузера: