我正在尝试选择此网站的下拉菜单并继续购买节目,但我无法提供帮助。
System.setProperty("webdriver.chrome.driver", "C:/Selenium/chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.theatrepeople.com/");
driver.findElement(By.id("edit-show")).click();
new Select(driver.findElement(By.id("edit-show"))).selectByVisibleText("The 39 Steps");
driver.findElement(By.id("edit-date-datepicker-popup-0")).click();
driver.findElement(By.linkText("27")).click();
driver.findElement(By.id("edit-ticket-no")).click();
new Select(driver.findElement(By.id("edit-ticket-no"))).selectByVisibleText("1 ticket");
driver.findElement(By.id("edit-submit-1")).click();
答案 0 :(得分:2)
没有理由点击选择表单(driver.findElement(By.id("edit-show")).click()
),您只想选择一个元素(使用Select
类)。这也可能是您的代码无法正常工作的原因。你应该删除这一行,它应该可以工作。
答案 1 :(得分:0)
以下代码可以使用 WebDriver driver = new ChromeDriver();
driver.get("http://www.theatrepeople.com/");
WebElement dropDown = driver.findElement(By.id("edit-ticket-no"));
Select sel = new Select(dropDown);
sel.selectByVisibleText("1 ticket");
答案 2 :(得分:0)
使用以下代码。它使用java脚本根据它的值来选择文本。真的很好问题。我也得学习。
static WebDriver driver;
public static void main(String[] args)
{
System.setProperty("webdriver.chrome.driver", "D:\\ToCustomer_31_5_13\\src\\main\\resources\\Drivers\\chromedriver.exe");
driver = new FirefoxDriver();
driver.get("http://www.theatrepeople.com/");
driver.findElement(By.id("edit-show")).click();
WebElement show = driver.findElement(By.xpath("//div[@id = 'edit-show-wrapper']//div[@id = 'showNameWrap']"));
List<WebElement> l = show.findElements(By.tagName("option"));
String valueToSelect = getAttibuteValueForShow(l, "The American Plan");
driver.findElement(By.id("mini-basket-ajax")).click();
selectValueInDropDown(valueToSelect);
}
public static String getAttibuteValueForShow(List<WebElement> li, String showName)
{
int j =0;
String value = null;
for(int i =0; i<li.size(); i++)
{
j = j +1;
String dropDownText = li.get(i).getText();
if(dropDownText.equalsIgnoreCase(showName))
{
value = driver.findElement(By.xpath("//div[@id = 'edit-show-wrapper']//div[@id = 'showNameWrap']//option[" + j +"]")).getAttribute("value");
System.out.println(value);
break;
}
}
return value;
}
public static void selectValueInDropDown(String value)
{
JavascriptExecutor js = (JavascriptExecutor) driver;
String jsCmd = "document.getElementsByName('show')[0].value='" + value + "'";
js.executeScript(jsCmd);
}