【发布时间】:2022-01-06 14:47:31
【问题描述】:
我正在尝试使购物网站自动化并选择要添加到购物车中的手机,但是在更改 ram 时,它不断显示相同的消息,即无法找到该元素。我尝试过隐式等待和显式等待,但是结果是一样的。我也尝试过使用 JavaScriptexecute,但同样的情况即将到来。
这是我正在尝试的代码 -
Thread.sleep(5000);
WebElement search = driver.findElement(By.name("q"));
search.sendKeys("mi note10 pro max");
driver.findElement(By.xpath("//[@id=\"container\"]/div/div[1]/div[1]/div[2]/div[2]/form/div/button")).click();
Thread.sleep(5000);
driver.findElement(By.xpath("//[@id=\"container\"]/div/div[3]/div[1]/div[2]/div[9]/div/div/div/a")).click();
Thread.sleep(5000);
WebDriverWait w = new WebDriverWait(driver,20);
WebElement ram = w.until(ExpectedConditions.presenceOfElementLocated(By.xpath("/html/body/div[1]/div/div[3]/div[1]/div[2]/div[6]/div/div[3]/div[1]/ul/li[2]")));
//WebElement ram2 = driver.findElement(By.className("_3V2wfe"));
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
js.executeScript("arguments[0].scrollIntoView(true);", ram);
ram.getText();
ram.click();
【问题讨论】:
-
我注意到的第一件事是您使用带有很多 div 的 xPath。这可以工作,但仅适用于静态页面,每次页面重新加载或更新时,div 的架构可能会有所不同,这可能是您的情况。我强烈建议您更改通知 selenium 您要搜索的对象的等待时间,例如使用
TagName财产。 -
@Kumar 请提供网站链接,以便调查
-
@AnandGautam 检查 Flipkart 并尝试检查,如果您得到结果,请告诉我。
标签: selenium selenium-webdriver automated-tests ui-automation