无法在 Selenium 的模式弹出窗口上定位元素 [英] Not able to locate element on a modal pop up window in Selenium

查看:58
本文介绍了无法在 Selenium 的模式弹出窗口上定位元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am automating a webpage using Selenium Webdriver. I am not able to click a button a modal pop up window using simple element locator method.

例子:

  • 打开 www.walmart.com
  • 在搜索框中输入电视.
  • 选择一些电视并点击加入购物车"
  • 现在结帐"按钮所在的位置会弹出一个窗口.我需要点击这个结帐"按钮.

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

I tried switchTo() windowhandle, I tried switchTo() frame but nothing worked.

推荐答案

这个网站很慢,有加载问题.因此,我建议您对每个 findElement 使用 显式等待.我已经编写了以下脚本并且可以完美运行

This website is very slow and has loading issue. So, I suggest you to use Explicit wait for each findElement. I have written the following script and works perfectly

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();

这篇关于无法在 Selenium 的模式弹出窗口上定位元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆