[英]WebDriver: Unable to Click on 'Radio Button'
我創建了包含在兩個單獨的類中的兩組代碼
所需任務 :需要在PH付款頁面上點擊“現金”按鈕。
第二類=設置包含頁面對象,框架使用不同的結構=到達付款頁面時代碼無法單擊現金選項='org.openqa.selenium.StaleElementReferenceException:在緩存中找不到元素'
我在兩個類中都使用了相同的定位器,但是當在“ 2”中使用正確的定位器時,無法單擊“無線電”按鈕; 如上所述,我得到列出的錯誤; 我試圖創建定制方法; 使用循環等和不同的定位器,但沒有任何效果。
工作代碼和類:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
public class TestClass {
@Test
public void test() throws InterruptedException {
//System.setProperty("webdriver.chrome.driver", "C:\\Users\\GBruno\\Desktop\\masteringSelenium\\Framework\\src\\test\\resources\\chromedriver.exe");
// WebDriver driver = new ChromeDriver();
WebDriver driver = new FirefoxDriver();
driver.get("http://www.pizzahut.co.uk");
driver.manage().window().maximize();
//click pizza button
driver.findElement(By.cssSelector("div[id='page'] [href='/menu/pizza']")).click();
//select any pizza to start order
driver.findElement(By.cssSelector("div[class='col-xxs-8 col-xs-6 col-sm-8 col-md-7 col-lg-6'] *> button")).click();
//enter postcode and find hut
Thread.sleep(2000);
driver.findElement(By.cssSelector("#ajax-postcode-txt")).sendKeys("TS1 4AG");
driver.findElement(By.cssSelector(" #get-store-btn")).click();
//click start order button
Thread.sleep(3000);
driver.findElement(By.xpath(".//*[@id='store-collection-section']/div[2]/div[4]/div[4]/div/a")).click();
//add pizza
Thread.sleep(5000);
driver.findElement(By.xpath(".//*[@id='pizza-product-list']/div/div[1]/div/div[2]/div[2]/div[3]/div/form/button")).click();
//click mini basket
driver.findElement(By.xpath("html/body/nav/div/div/div[3]/div/div[1]/div[2]/span[3]")).click();
Thread.sleep(2000);
//click checkout
driver.findElement(By.xpath(".//*[@id='divBasket']/div[1]/div/div[2]/div[2]/a")).click();
Thread.sleep(2000);
//checkout guest & enter details
driver.findElement(By.xpath(".//*[@id='frmCheckout']/div[2]/div/div[1]/a")).click();
driver.findElement(By.xpath(".//*[@id='ddlTitleSelectBoxIt']")).click();
driver.findElement(By.linkText("Mr")).click();
driver.findElement(By.xpath(".//*[@id='FirstName']")).sendKeys("Tom");
driver.findElement(By.xpath(".//*[@id='LastName']")).sendKeys("Hanks");
driver.findElement(By.xpath(".//*[@id='EmailAddress']")).sendKeys("tom_hanks12344566@mail.com");
driver.findElement(By.xpath(".//*[@id='ConfirmEmailAddress']")).sendKeys("tom_hanks12344566@mail.com");
driver.findElement(By.xpath(".//*[@id='PhoneNumber']")).sendKeys("01234 5647890");
driver.findElement(By.xpath(".//*[@id='btnFindAddress']")).click();
Thread.sleep(3000);
driver.findElement(By.xpath(".//*[@id='ddlAddressesToChooseSelectBoxItArrowContainer']")).click();
driver.findElement(By.linkText("K F C 189-191 Linthorpe Road Middlesbrough TS14AG")).click();
driver.findElement(By.xpath(".//*[@id='btnContinue']")).click();
driver.findElement(By.xpath(".//*[@id='payment-methods']/div[1]/div/label/input")).click();
}
}
代碼管理工作:
public void selectPaymentTypeAndPayForOrder() throws Exception {
Thread.sleep(3000);
driver.findElement(By.xpath(".//*[@id='payment-methods']/div[1]/div/label/input")).click();
driver.findElement(By.cssSelector(" form[id='CheckoutForm'] input[data-paymentname='Cash']")).click();
以下代碼解決了該問題:
List<WebElement> iframes = driver.findElements(By.tagName("iframe"));
if(iframes.size() == 0) {
Assert.fail();
} else {
// Frames present
Assert.assertTrue(true);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.