selenium 无法使用Selify Java自动注销Amazon.com

wooyq4lh  于 2022-11-10  发布在  Java
关注(0)|答案(3)|浏览(112)

我正在试着做一个简单的SeleniumJava自动化,让“登录和注销亚马逊网站”自动化。我可以使用元素定位器技术登录,比如XPath和CSS选择器。但是对于Signout,我抛出了ElementNotInteractable异常。
下面是我尝试的代码(仅发布Signout的代码段)。

WebElement element1 = driver.findElement(By.xpath("//header/div[@id='navbar']/div[@id='nav-belt']/div[3]/div[1]/a[1]/span[1]"));
element1.click();
driver.findElement(By.xpath("//a[@id='nav-item-signout']")).click();

我用不同的元素定位器技术尝试了上面的代码段,比如css选择器等,但没有成功。请建议我是否可以通过任何其他方法找到并单击弹出菜单中的注销链接。谢谢。

6uxekuva

6uxekuva1#

您可以尝试下面的代码,其中实现了显式等待,因此它将等待元素单击

WebDriverWait wait = new WebDriverWait(driver, 20);
WebElement element1 =driver.findElement(By.xpath("//header/div[@id='navbar']/div[@id='nav- 
       belt']/div[3]/div[1]/a[1]/span[1]"));
element1.click();
ele2=driver.findElement(By.xpath("//a[@id='nav-item-signout']"))   
wait.until(ExpectedConditions.elementToBeClickable(ele2));
ele2.click();
sqyvllje

sqyvllje2#

尝试使用下面的方法,而不是ick()方法:

WebElement element1 = driver.findElement(By.xpath("//header/div[@id='navbar']/div[@id='nav-belt']/div[3]/div[1]/a[1]/span[1]"));
  element1.sendKeys(Keys.RETURN);
driver.findElement(By.xpath("//a[@id='nav-item-signout']")).sendKeys(Keys.RETURN);

您也可以尝试回车,而不是回车

jljoyd4f

jljoyd4f3#

您可以尝试以下代码,其中实现了移动器悬停,以便它将悬停在菜单上,然后您可以单击以注销。

WebElement ele = driver.findElement(By.id("nav-link-accountList-nav-line-1"));
Actions action = new Actions(driver);
action.moveToElement(ele).perform();
driver.findElement(By.xpath("//*[@id='nav`enter code here`-item-signout']/span")).click();

相关问题