4 回答
TA贡献1797条经验 获得超6个赞
您可能正在尝试在元素上使用文本作为登录 amazon.in,并且要实现这一点,您需要:click()
鼠标悬停带有文本的元素作为您的订单/帐户&列表
单击带有文本的元素,如 登录
您可以使用以下解决方案:
System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.amazon.in");
new Actions(driver).moveToElement(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@id='nav-tools']/a//span[@class='nav-line-2']")))).build().perform();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[@class='nav-action-inner' and text()='Sign in']"))).click();
TA贡献1828条经验 获得超4个赞
看起来您正在尝试单击给定锚点元素下的第三个 span 元素。给出错误的 XPath 不适用于您给出的元素。
给定的元素具有 id。因此,您可以直接通过 id 找到元素。
使用标识:
Webdriver driver = new ChromeDriver();
driver.findElement(By.id("nav-link-accountList"));
使用 Css 选择器:
Webdriver driver = new ChromeDriver();
driver.findElement(By.cssSelector("#nav-link-accountList"));
使用 X 路径:
Webdriver driver = new ChromeDriver();
driver.findElement(By.xpath("//*[@id='nav-link-accountList']"));
TA贡献1911条经验 获得超7个赞
您可以使用下面的 xpath 选择链接
//a[@class='nav-a nav-a-2' and @data-nav-role='signin']
或者你应该擅长
//a[@data-nav-role='signin']
定位器
a[data-nav-role='signin']
添加回答
举报