我的代码首先将我登录到PayPal,然后登录到eBay并导航到“支付费用”页面,然后使用PayPal结账。最后一个“继续”按钮我无法单击/提交。我尝试了xpath、id和类。我甚至尝试发送TAB 7x,直到按下“继续”按钮,然后发送Enter,但没有成功。
我已经找到了这个讨论,但我不知道如何让它为我工作。PayPal沙箱签出“继续按钮”-无法定位元素:-C#网络驱动程序
//Chrome WebDriver specific
System.setProperty("webdriver.chrome.driver", "C:\\automation\\drivers\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize(); //maximise webpage
WebDriverWait wait = new WebDriverWait(driver, 20);
//navigate to Paypal
driver.get("https://www.paypal.com/uk/signin");
//wait 2.5s for the page to load
try {
Thread.sleep(2500);
}
catch (Exception e) {
e.printStackTrace();
}
WebElement paypalEmail = driver.findElement(By.id("email"));
paypalEmail.sendKeys("******");
//wait 2.5s for the page to load
try {
Thread.sleep(2500);
}
catch (Exception e) {
e.printStackTrace();
}
WebElement paypalSubmit = driver.findElement(By.id("btnNext"));
paypalSubmit.click();
String URL = ("https://www.paypal.com/uk/signin");
driver.get(URL);
WebElement form2 = driver.findElement(By.cssSelector(".main form"));
WebElement username = form2.findElement(By.id("password"));
username.sendKeys("******");
WebElement paypalSubmit2 = driver.findElement(By.id("btnLogin"));
paypalSubmit2.click();
//navigate to Ebay
driver.get("https://signin.ebay.co.uk/ws/eBayISAPI.dll?SignIn&ru=https%3A%2F%2Fwww.ebay.com%2F");
// Enter user name , password and click on Signin button
WebElement form = wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("#mainCnt #SignInForm")));
form.findElement(By.cssSelector("input[type=text][placeholder='Email or username']")).sendKeys("******");
form.findElement(By.cssSelector("input[type=password]")).sendKeys("******");
form.findElement(By.id("sgnBt")).click();
driver.get("http://cgi3.ebay.co.uk/ws/eBayISAPI.dll?OneTimePayPalPayment");
//WebElement Pay =
driver.findElement(By.xpath("//input[@value='Pay']")).click();
WebDriverWait wait2 = new WebDriverWait(driver, 15);
wait2.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id=\"confirmButtonTop\"]")));
driver.findElement(By.xpath("//*[contains(@id,'confirmButtonTop')]")).click();
}
}
有时,传统的单击()
不起作用。在这种情况下,请尝试使用Javascript执行器单击,如下所示。
确保导入该类
org.openqa.selenium.JavascriptExecutor
用这个代替单击();
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", driver.findElement(By.xpath(“//input[@data-test-id='continueButton']”)));
试试这个,让我知道这是否适合你。
根据我的经验,paypal喜欢使用iFrame。如果在您的情况下是这样的话,这意味着除非您告诉webdriver切换帧上下文,否则无论您的xpath/css选择器如何,paypal表单都将不可用。
您可以获得当前加载此代码的所有可用帧的列表:
String[] handles = driver.getWindowHandles()
实际页面将始终是返回数组中的第0个索引。如果贝宝是你唯一的iFrame,那么你可以瞄准第1个索引。这里有一个可能的解决方案:
String mainPageHandle = handles[0];
String paypalHandle = handles[1];
driver.switchTo().window(paypalHandle);
// Do paypal interactions
driver.switchTo().window(mainPageHandle);
// Back to the main page
肯定有更强大的方法来处理这个问题,如果您的页面不幸有多个iFrame,那么您可能需要做更多的工作来验证哪个句柄是哪个,例如测试您知道包含在其中的元素的存在。一般情况下,每次加载帧的顺序都会相同。作为解决这个问题的黄金路径,这将让你进出iFrame执行工作。
根据您给定的屏幕截图,单击“继续”按钮时,应使用以下选项之一:
方法1:
WebElement paypalSubmit = driver.findElement(By.xpath("//input[@data-test-id='continueButton']"));
paypalSubmit.click();
方法2:
By paypalButton=By.xpath("//input[@data-test-id='continueButton']"));
WebElement element=driver.findElement(paypalButton);
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].scrollIntoView(true);",element);
js.executeScript("arguments[0].click();", element);
尝试第二种方法,如果你觉得你的按钮需要位滚动到底部获得可点击。
如果上述方法不起作用,您还可以为按钮使用一个XPath:
//input[@value='Continue' and @id='confirmButtonTop']
无法使用Selenium单击链接-WebDriver:Chrome:Win7 下面是我检查按钮时的代码: span class=“UI-Button-Text”>span class=“Button-Content”>继续 我试过以下几种方法,都行不通:
我想做的就是选择下拉列表。 下拉列表示例 代码: 我已经尝试了很多不同的Xpaths HTML代码 单击我查看HTML示例1 看看例1和例2中的名字 单击我为超文本标记语言实例2 您会注意到 HTML 代码已更改为 我认为这是我面临的问题的一部分。真是卡住了。我也尝试过使用ChroPath 提前谢谢你! 更新: 评论要求提供超文本标记语言代码的更多细节 更新2(解决方案) 我错在这里。我没有提供足
我已经环顾四周,但一直没有找到我想要的具体答案;希望有人能给我指明正确的方向。 我正在Visual Studio 2015中使用WebDriver 2.53自动完成贝宝结帐过程,使用C#对抗Firefox驱动程序。我进入贝宝的流量很好,能够通过沙箱环境登录。然而,当我在初始登录后到达确认屏幕时,我似乎无法选择继续按钮。 我的代码是:
我试图点击下面xpath提供的按钮。它显示以下错误: cmd中。
我是使用Appium和TestNg测试移动应用程序自动化的新手。我正在练习自动化amazon应用程序,应用程序已经成功启动,但当我尝试单击登录选项时,它得到了: “失败:login org.openqa.selenium.NosuChelementException:无法使用给定的搜索参数在页面上找到元素。(警告:服务器未提供任何stacktrace信息)命令持续时间或超时:0毫秒。”
我试图用硒点击“下一页”按钮,但没有成功。我使用了正确的CSS选择器还是应该把它换成别的东西?