我正在使用selenium来测试零售网站。一旦我到达Checkout页面,我选择的选项为Paypal,沙盒网址正在打开。
我可以输入用户名和密码,点击“登录”按钮。
之后我被重定向到“同意并继续”页面。在哪里我无法采取任何行动。
我可以清楚地看到按钮属性如下
我已尝试过以下代码,但无法执行任何操作。
WebElement AgreeandContinue= driver.findElement(By.tagName("input"));
AgreeandContinue.click();
答案 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
,如下所示:
WebElement
:
cssSelector
OR
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();