#java #selenium #selenium-webdriver #webdriver #webdriverwait
#java #селен #selenium-webdriver #webdriver #webdriverwait
Вопрос:
Я пытаюсь изучить selenium с Java, используя ebay.com. Я обнаружил сложный элемент для выбора элемента после наведения курсора мыши. Вот мой фрагмент кода
driver.findElement(By.xpath("//a[contains(text(),'Tennis')]")).click()
Однако приведенный выше код возвращает ошибку, элемент не доступен для взаимодействия
Я добавил Thread.sleep(60000)
раньше driver.findElement
и все еще не могу щелкнуть
вот окно, которое я хотел щелкнуть
Комментарии:
1. Попробуйте более конкретный xpath и проверьте, что вы можете щелкнуть по чему угодно. Например, найдите элемент с
id
на ebay и посмотрите, сможете ли вы щелкнуть по нему. Если вы можете, то вы знаете, что проблема в вашем селекторе xpath.
Ответ №1:
Наведите курсор на спортивное меню с помощью Actions
и, когда откроется меню, перейдите в подменю Теннис. Чтобы дождаться, пока теннис станет интерактивным, используйте WebDriverWait
:
WebDriverWait wait = new WebDriverWait(driver, 5);
Actions actions = new Actions(driver);
driver.get("https://www.ebay.com");
WebElement sports = driver.findElement(By.linkText("Sports"));
actions.moveToElement(sports).perform();
wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Tennis"))).click();
Ответ №2:
Вам нужно навести указатель мыши на элемент с текстом в виде «Спорт» и дождаться elementToBeClickable()
текста в виде «Теннис«, и вы можете использовать следующее решение:
-
Блок кода:
System.setProperty("webdriver.chrome.driver", "C:\Utility\BrowserDrivers\chromedriver.exe"); ChromeOptions options = new ChromeOptions(); options.addArguments("start-maximized"); options.addArguments("--disable-extensions"); //options.addArguments("disable-infobars"); WebDriver driver = new ChromeDriver(options); driver.get("https://www.ebay.com/"); new Actions(driver).moveToElement(new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.linkText("Sports")))).perform(); new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[text()='Sports']//following::div[@class='hl-cat-nav__flyout']//span[text()='Other Categories']//following::ul[1]/li/a[normalize-space()='Tennis']"))).click();
-
Снимок браузера: