无法点击同意&使用Selenium在Paypal CheckOut中继续按钮

时间:2017-10-05 21:44:41

标签: java selenium selenium-webdriver

我正在使用selenium来测试零售网站。一旦我到达Checkout页面,我选择的选项为Paypal,沙盒网址正在打开。

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();

4 个答案:

答案 0 :(得分:0)

您可能在同一页面中有许多输入元素。那么尝试按类或id选择呢?

WebElement AgreeandContinue= driver.findElement(By.ByClassName('btn'));

WebElement AgreeandContinue= driver.findElement(By.ByClassName('continueButton'));

然后使用submit()代替click(),因为元素是'submit'类型`

仅供参考:https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebElement.html

答案 1 :(得分: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

答案 2 :(得分:0)

如果我们查看您提供的HTML WebElement value Agree & Continue ,则 {{1} } 标签。因此,我们必须构建一个唯一的<input>css来标识xpath,如下所示:

  1. WebElement

    cssSelector
  2.   

    OR

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

      xpath

答案 3 :(得分:0)

尝试使用ID,但如果不是,您可以尝试使用其他定位器,我建议您必须使用xpath:

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

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

我还建议您可以使用wait,直到元素可点击或可见

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();