一尘不染

无法在Selenium中的模式弹出窗口中找到元素

selenium

我正在使用Selenium Webdriver自动执行网页。我无法使用简单元素定位器方法在模式弹出窗口中单击按钮。

例:

  • 打开www.walmart.com
  • 在搜索框中输入电视。
  • 选择一些电视,然后单击“添加到购物车”
  • 现在出现一个弹出窗口,其中有“签出”按钮。我需要点击此“结帐”按钮。

我尝试了switchTo()窗口句柄,也尝试了switchTo()框架,但没有任何效果。


阅读 268

收藏
2020-06-26

共1个答案

一尘不染

该网站速度非常慢,并且存在加载问题。因此,我建议您对每个findElement
使用Explicit等待。我写了以下脚本,效果很好

WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();

driver.get("http://www.walmart.com/");
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("[placeholder='Search']")))
        .sendKeys("TV");
driver.findElement(By.cssSelector(".searchbar-submit.js-searchbar-submit")).click();
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector("#tile-container>div>a>img")))
        .get(0).click();        
wait.until(ExpectedConditions.elementToBeClickable(By.id("WMItemAddToCartBtn"))).click();
wait.until(ExpectedConditions.elementToBeClickable(By.id("PACCheckoutBtn"))).click();
2020-06-26