我只想将鼠标悬停在亚马逊网站上的“部门”下拉列表上。该代码看起来不错,但列表未显示。这是我要显示的“部门”下拉列表
这是我的代码
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();
答案 0 :(得分:1)
看起来 xpath 不是唯一的,并且具有相同的定位符,可以在页面中定位6个元素。当我们有多个具有相同定位符的元素时,硒将成为第一个元素。就您而言,不幸的是,“部门”并不是该定位器的第一个元素。
将您的xpath更改为以下:[已测试并有效]
//span[@class='nav-line-2' and contains(.,'Departments')]
PS:在学习硒之前,请先学习xpath和CSS教程。
答案 1 :(得分:0)
要在文本为部门的元素上将鼠标悬停,您需要诱使 WebDriverWait 使所需的元素可见< / em>并结合使用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();
}
}
浏览器快照: