我首先测试了第一行代码单击XPath是否有效,但当我添加第二行代码单击By.name((时,它不起作用,所以我尝试更改XPath,然后更改CSS选择器,但它只单击第一行(行中的XPath代码(。我试过了,但似乎没有点击其他两个元素。我发现它只点击第一页上的内容,而不是新页面上的内容。我告诉它点击我想做的元素。我使用的是Selenium version 3.141.59
。
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\Users\ae65255\Desktop\java_gui\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://shop.palaceskateboards.com/collections/new");
driver.findElement(By.xpath("//*[@id="product-loop"]/div[@data-alpha='S-LINE JOGGER BLACK']")).click(); //only this one work
driver.findElement(By.name("button")).click(); //second click dosen't work?
driver.findElement(By.linkText("Cart")).click(); //this dosen't work too?
}
在定位元素之前添加一些等待以加载页面
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement button = wait.until(ExpectedConditions.elementToBeClickable(By.name("button")));
button.click();
第三个定位器By.linkText("Cart")
不起作用,因为按钮没有Cart
文本,它位于data-text
和value
属性中。
附带说明一下,在查找部分文本时应使用By.partialLinkText()
。