2016-09-20 16 views
0

無法點擊單選按鈕,一旦彈出加載的webdriver:等待「JS彈出屏幕」加載不使用Thread.sleep()方法

*請注意:我曾提出在過去的問題,但我要避免使用的Thread.sleep
Link

方案(成功)
1.如果我直接訪問任何小屋通過以下URL
2.蔭能夠成功地點擊它選擇的無線電鏈路上'稍後訂購'


方案(不成功)
1.如果我訪問必勝客URL
2.單擊按鈕比薩
3.點擊任一 '比薩類型' 啓動訂單按鈕
4 。當本地化頁面出現時>輸入郵編'AL1 2PS'>點擊找到一個小屋
5.我的腳本無法點擊'Order for Later'單選按鈕
6.但是在成功的場景中,我可以點擊在鏈接上?
7.我已經嘗試了許多等待和定製的等待,等待JS但唯一的一次成功蔭能夠點擊鏈接使用Thread.sleep(

請可以在一個解決問題的建議人?

非常感謝您的幫助

+0

您使用的是什麼版本的Selenium?你有沒有嘗試升級到最新? – maxTrialfire

回答

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" 
+0

感謝@Jeffc的幫助,代碼已經奏效! – Gbru

+0

如果這回答了您的問題,請將其標記爲已接受,如果您發現它有用(或針對該問題的任何答案),請將其提升。 – JeffC