我试图通过做一个for循环在输入标签上增加两次来选择Selenium POM中两个相同项目的数量,但是我的解决方案似乎不起作用。如何使用POM增加两次?
这是我存储页面对象的文件:
package pageObjects;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Select;
public class TTPStorePage {
WebDriver driver;
public TTPStorePage(WebDriver driver) {
this.driver = driver;
}
By size= By.id("size");
By quantity= By.id("quantity_5cb788738ee07");
By reset= By.className("reset_variations");
By submit=By.cssSelector("button[type='submit']");
By remove=By.xpath("//a[contains(@data-gtm4wp_product_id,'TS-TTP']");
By contents=By.className("cart-contents");
public void selectSize(int index) {
Select drop = new Select(driver.findElement(size));
drop.selectByIndex(index);
}
// The problem child.
public void quantityItem() {
for(int i=0;i<2;i++) {
driver.findElement(quantity).sendKeys(Keys.ARROW_UP);
}
}
public WebElement resetItems() {
return driver.findElement(reset);
}
public WebElement submitButton() {
return driver.findElement(submit);
}
public WebElement removeItem() {
return driver.findElement(remove);
}
public WebElement cartContents() {
return driver.findElement(contents);
}
}
这是我存储测试用例的文件。这是我最主要的问题。我试图弄清楚如何将我的物品正确地增加两个。
package SimpleProgrammer;
import java.io.IOException;
import org.testng.annotations.Test;
import resources.Base;
import pageObjects.TTPProductPage;
import pageObjects.TTPStorePage;
public class PurchaseApplication extends Base {
@Test
public void BuyItem() throws IOException {
driver=initializeDriver();
driver.get("https://simpleprogrammer.com/store/products/trust-the-process-t-shirt/");
TTPProductPage pp= new TTPProductPage(driver);
pp.TTPButton().click();
TTPStorePage sp = new TTPStorePage(driver);
sp.selectSize(4);
// Right here
sp.quantityItem();
}
}
答案 0 :(得分:1)
是输入字段,请先清除输入字段,然后为sendKeys提供值。请使用名称attr,该名称是唯一的,而您的ID attrs不是唯一的。
WebElement ele=driver.findElement(By.name("quantity"));
ele.clear();
ele.sendKeys("2");
答案 1 :(得分:1)
我已经查找了您要访问的网页。您尝试通过定位器TTPStorePage
在quantity
类中访问的微调器具有动态ID。每次加载页面时,它都会更改。您必须更改定位器策略。
尝试使用以下定位器之一作为数量。
Css选择器:
By quantity = By.cssSelector("div.quantity > input");
XPath:
By quantity = By.xpath("//div[@class='quantity']/input");
此外 in方法quantityItem
中不需要for循环,因为您可以通过sendKeys
将值直接设置为所需的值,因为它是{ {1}}元素。
尝试一下
input