WebDriver:等待“JS弹出屏幕”加载而不使用Thread.sleep()

时间:2016-09-20 15:25:08

标签: javascript java selenium selenium-webdriver webdriver

弹出窗口加载后无法单击单选按钮

*请注意我过去曾提出过一个问题,但我想避免使用Thread.sleep
Link

情景(成功)
1.如果我通过以下URL直接访问任何小屋:
2.我成功地点击了选择单选按钮'订购以后'的链接


情景(不成功)
 1.如果我访问必胜客URL
 2.单击Pizza按钮
 3.单击任何“披萨类型”开始订单按钮
 4.当本地化页面出现时>输入邮政编码'AL1 2PS'>点击查找小屋
 5.我的脚本无法单击“稍后订购”单选按钮
 6.但是在成功的情况下,我可以点击链接吗?  7.我尝试了许多等待和自定义等待,js等待但是我唯一能够成功点击链接的是Thread.sleep(})

请问任何人可以就问题的解决方案提出建议吗?

非常感谢你的帮助

1 个答案:

答案 0 :(得分:1)

您没有发布任何代码,所以我不确定您尝试过的是什么。我编写了下面的代码并且有效。

String pizzaType = "Hawaiian"; // the pizza type from the Pizza menu
String postcode = "AL1 2PS";
String url = "https://www.pizzahut.co.uk/";
driver.get(url);
driver.findElement(By.linkText("Pizza")).click(); // click Pizza menu
driver.findElement(By.xpath("//h3[text()='" + pizzaType + "']/../../../..//button")).click(); // click a pizza type specified by pizzaType
driver.findElement(By.id("ajax-postcode-txt")).sendKeys(postcode); // enter a postcode
driver.findElement(By.id("get-store-btn")).click(); // click "Find a Hut"
driver.findElement(By.cssSelector("input[data-value='later']")).click(); // click "Order for later"