将鼠标悬停在亚马逊的下拉菜单上
Hover over dropdown menu in Amazon
我只想将鼠标悬停在亚马逊网站上的 "Departments" 下拉列表上。代码看起来不错,但列表没有显示。这是我要显示的部门下拉列表
这是我的代码
driver = new ChromeDriver();
driver.get("https://www.amazon.com");
Actions actions = new Actions(driver);
WebElement ele = driver.findElement(By.xpath("//span[@class='nav-line-2']"));
Thread.sleep(300);
actions.moveToElement(ele);
actions.perform();
actions.perform();
看起来 xpath 不是唯一的并且具有相同的定位器,在页面中定位 6 个元素。当我们有多个具有相同定位器的元素时,硒会成为第一个元素。在您的情况下,不幸的是 'Departments' 不是具有该定位器的第一个元素。
将您的 xpath 更改为以下内容:[已测试并有效]
//span[@class='nav-line-2' and contains(.,'Departments')]
要鼠标悬停在文本为Departments的元素上,您需要引入WebDriverWait要使所需的 元素可见 并结合使用 moveToElement()
方法和 perform()
方法,您可以使用以下解决方案:
代码块:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
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 amazon_com_Departments {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\Utility\BrowserDrivers\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
WebDriver driver = new ChromeDriver(options);
driver.get("https://www.amazon.com");
WebElement department = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@id='nav-link-shopall' and normalize-space()='Departments']")));
new Actions(driver).moveToElement(department).perform();
}
}
浏览器快照:
我只想将鼠标悬停在亚马逊网站上的 "Departments" 下拉列表上。代码看起来不错,但列表没有显示。这是我要显示的部门下拉列表
这是我的代码
driver = new ChromeDriver();
driver.get("https://www.amazon.com");
Actions actions = new Actions(driver);
WebElement ele = driver.findElement(By.xpath("//span[@class='nav-line-2']"));
Thread.sleep(300);
actions.moveToElement(ele);
actions.perform();
actions.perform();
看起来 xpath 不是唯一的并且具有相同的定位器,在页面中定位 6 个元素。当我们有多个具有相同定位器的元素时,硒会成为第一个元素。在您的情况下,不幸的是 'Departments' 不是具有该定位器的第一个元素。
将您的 xpath 更改为以下内容:[已测试并有效]
//span[@class='nav-line-2' and contains(.,'Departments')]
要鼠标悬停在文本为Departments的元素上,您需要引入WebDriverWait要使所需的 元素可见 并结合使用 moveToElement()
方法和 perform()
方法,您可以使用以下解决方案:
代码块:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; 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 amazon_com_Departments { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "C:\Utility\BrowserDrivers\chromedriver.exe"); ChromeOptions options = new ChromeOptions(); options.addArguments("start-maximized"); WebDriver driver = new ChromeDriver(options); driver.get("https://www.amazon.com"); WebElement department = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@id='nav-link-shopall' and normalize-space()='Departments']"))); new Actions(driver).moveToElement(department).perform(); } }
浏览器快照: