Как написать курсор мыши с PageFactory
Мой код должен нажать на значение из выпадающего меню, у меня есть этот код:
WebElement element = driver.findElement(By.xpath("//a[text()='Product Category']"));
Actions action = new Actions(driver);
action.moveToElement(element).perform();
waitForElementToBeDisplayed(driver.findElement(By.xpath("//a[text()='iMacs']")), 500);
WebElement subElement = driver.findElement(By.xpath("//a[text()='iMacs']"));
action.moveToElement(subElement);
action.click();
action.perform();
Я попытался переписать ваш код, и я пишу с PageFactory:
WebElement element = mouse_over_product_category;
Actions action = new Actions(driver);
action.moveToElement(element).perform();
waitForElementToBeDisplayed(driver.findElement(By.xpath("//a[text()='iMacs']")), 500);
WebElement subElement = link_iMacs;
action.moveToElement(subElement);
action.click();
action.perform();
Моя ошибка:
org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document
Может кто-нибудь помочь мне, как написать. Я новичок
2 ответа
WebElement element=driver.findElement(By.xpath("//a[text()='Product Category']"));
String mouseOver = "var evObj = document.createEvent('MouseEvents');" +
"evObj.initMouseEvent(\"mouseover\",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);" +
"arguments[0].dispatchEvent(evObj);";
((JavascriptExecutor)driver).executeScript(mouseOver, element);
Этот с JavaScript
Есть более чем 2 способа сделать это..
попробуйте выполнить то, что вам нужно, используя эти:
//Conventional Way- Identifying the Select Menu Box and sending the text desired to select either by Text or Index or by value
WebElement elDropDownItem = driver.findElement(By.xpath(""));
if (elDropDownItem != null) {
Select comboBox = new Select(elDropDownItem);
//Either of these 3 should work SelectBy-- should work
comboBox.selectByVisibleText(MenuItemText);
break;
//OR
comboBox.selectByIndex(Integer
.parseInt(MenuItemIndex));
break;
//OR
comboBox.selectByValue(MenuItemValue);
break;
}
По-другому:
//Clicking the down arrow and then clicking on the Select Item you desire
WebElement element= driver.findElement(By.xpath("downArrow"));
element.click();
WebElement element1= driver.findElement(By.xpath("selectMenuItem"));
element1.click();