为什么硒只单击代码的第一行而不单击其他两行?

时间:2018-12-12 09:07:40

标签: java selenium selenium-webdriver selenium-chromedriver

我首先测试了单击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?
    }

1 个答案:

答案 0 :(得分:1)

添加一些等待时间以让页面加载,然后再定位元素

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement button = wait.until(ExpectedConditions.elementToBeClickable(By.name("button")));
button.click();

第三个定位器By.linkText("Cart")无效,因为按钮没有Cart文本,它位于data-textvalue属性中。

请注意,在查找部分文本时,应使用By.partialLinkText()