2017-10-05 38 views
0

我使用硒測試我的零售網站。一旦我到達Checkout頁面,我將選擇PayPal在沙箱網址打開的位置。無法點擊同意並繼續按鈕在支付寶CheckOut使用硒

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-07L974777B231831F#/checkout/login

我能夠輸入用戶名和密碼,點擊登錄按鈕。

之後,我被重定向到「同意&繼續」頁面。我無法執行任何操作的地方。

,我可以清楚地看到該按鈕的屬性如下

enter image description here

我曾嘗試下面的代碼,但不能執行任何動作。

WebElement AgreeandContinue= driver.findElement(By.tagName("input")); 
AgreeandContinue.click(); 

回答

0

看起來像按鈕具有定義一個id ,所以這將是最好的定位器使用:driver.findElement(By.id("confirmButtonTop));

如果這不起作用,那麼您可能需要添加一些等待按鈕才能點擊的按鈕。

如果這仍然無法正常工作,那麼很可能就像許多商業工具一樣,該按鈕實際上在不同的iframe中。再看看html,以確認是否屬於這種情況(它會有iframe標籤)。如果是這種情況,那麼在點擊按鈕之前,您必須先切換到iframe:driver.switchTo().frame(...)How to identify and switch to the frame in selenium webdriver when frame does not have id

0

如果我們看一下HTML您提供的WebElementvalueAgree & Continue<input>標籤內。因此,我們必須建立一個獨特的cssxpath識別WebElement如下:

  1. cssSelector

    WebElement AgreeandContinue= driver.findElement(By.cssSelector("input#confirmButtonTop")); 
    

OR

  • xpath

    WebElement AgreeandContinue= driver.findElement(By.xpath("//input[@id='confirmButtonTop']")); 
    
  • 0

    嘗試用ID,但如果它不是你可以與其他定位器試試,我建議你使用的XPath:

    driver.findElement(By.xpath("//input[contains(@id,'confirmButtonTop')]")).click(); 
    

    driver.findElement(By.xpath("//*[contains(@id,'confirmButtonTop')]")).click(); 
    

    還我會建議你可以使用等到元素可以點擊,或可見

    WebDriverWait wait = new WebDriverWait(driver, 15); 
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[contains(@id,'confirmButtonTop')]"))); 
    driver.findElement(By.xpath("//input[contains(@id,'confirmButtonTop')]")).click(); 
    

    WebDriverWait wait = new WebDriverWait(driver, 15); 
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[contains(@id,'confirmButtonTop')]"))); 
    driver.findElement(By.xpath("//*[contains(@id,'confirmButtonTop')]")).click();