2015-06-12 2 views
1

я не мог нажать depart, arrvie выпадающей формы менюя не мог нажать выбери выпадающее меню на сайте

https://m.flyscoot.com/search

Я пытался использовать Xpath нажимать на них, но я не получил никакой удачи:

@driver.find_element(:xpath, "//~~~~~").click 

И есть ли способ дать мне заполнить date value вручную.

Нецелесообразно нажимать дату мышью, если я хочу щелкнуть весь год.

Более практичное решение генерирует даты всего года, а затем заполняет его, но я не могу получить его с селеном firefox driver.

не повезло по XPath с содержит метод:

@driver.find_element(:xpath, "//*[contains(text(),'Departure Airport')]") 

NoSuchElementError: Unable to locate element: [4] pry(#)> arrival = @driver.find_element(:xpath, "//[contains(text(),'Departure Airport')]") Selenium::WebDriver::Error::NoSuchElementError: Unable to locate element: {"method":"xpath","selector":"//[contains(text(),'Departure Airport')]"} from [remote server] file:///var/folders/6d/th4jpm90n1cx8h2l3kr49fr0000gn/T/webdriver-profile20150612-45453-15z20qu/extensions/[email protected]/components/driver-component.js:10271:in `FirefoxDriver.prototype.findElementInternal'

webdriver

➜ workspace gem list selenium-webdriver 

*** LOCAL GEMS *** 

selenium-webdriver (2.45.0) 
+0

Можете ли вы опубликовать свой URL? –

+0

@SarithaG Привет, я обновил его https://m.flyscoot.com/search – user3675188

ответ

0

Для отправления можно использовать (и другие способы тоже, но я не знаю, что ваш исходный код так хватая строк здесь):

arrival = find_element_by_xpath("//*[contains(text(),'Departure Airport')") 
departure find_element_by_xpath("//*[contains(text(),'Arrival Airport')") 

Что касается установки даты, мне нужно будет увидеть ваши исходный код страницы. Я бы предположил, что это может быть осуществлено с использованием как прямой JS или Jquery с driver.execute_script('script here') command.

+0

Нет проблем, если вы разместите свой код страницы. Я мог бы получить четкое представление. – user3277225

+0

Что такое код страницы? html исходный код? я попробовал ваше решение, ему все равно не повезло, так грустно – user3675188

+0

ok посмотрел на страницу попробуйте этот xpath "// div [@ id = 'departureAirport-button]" и "// div [@ id =' arrivalAirport-button ' ] " – user3277225

0

Используйте ниже код, чтобы выбрать аэропорт:

driver.get("https://m.flyscoot.com/search"); 

    // click on departure airport 
    driver.findElement(By.xpath("//div[@id='departureAirport-button']")) 
      .click(); 

    // Select any of option from the list of airports,Here i m selecting "sydney" 
    driver.findElement(
      By.xpath("html/body/div[6]/div/div[2]/div/div[3]/div/div/div/div/div[2]/div[1]/div/div[1]/div[5]/div")) 
      .click(); 

    //Click on done 
    driver.findElement(By.xpath("//div[text()='Done']")).click(); 

И это код для выбора Дата:

// Click on Departure Date 
    driver.findElement(By.xpath("//input[@id='date-depart-display']")) 
      .click(); 


    // select date by clicking on particular date,Here i m selecting today's 
    // date. 
    driver.findElement(
      By.xpath(".//*[@id='ui-datepicker-div']/div[1]/table/tbody/tr[2]/td[6]/a")) 
      .click(); 
+0

У вас пробовал вашу функцию щелчка, она не показывала мне всплывающее окно в моем браузере. Так грустно! – user3675188

+0

Yah ... i have Он отлично работает.какой браузер вы используете? –

+0

мой браузер firefox :( – user3675188

0

Прежде всего, дождаться выпадающего вылета, чтобы быть видимым, прежде чем взаимодействовать с ним.

Кроме того, используйте Select abstraction и selectByVisibleText() (Java):

wait = WebDriverWait(driver, 10); 

WebElement departure = wait.until(ExpectedConditions.visibilityOfElementLocated(By.ID("departureAirport"))); 
Select departureSelect = new Select(select); 
departureSelect.selectByVisibleText("Hong Kong (HKG)"); 

WebElement arrival = driver.findElement(By.ID("arrivalAirport")); 
Select arrivalSelect = Select(arrival); 
arrivalSelect.selectByVisibleText("Melbourne (MEL)"); 

Та же логика в Python:

from selenium import webdriver 
from selenium.webdriver.support.select import Select 
from selenium.webdriver.support.wait import WebDriverWait 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support import expected_conditions as EC 


driver = webdriver.Firefox() 
driver.get("https://m.flyscoot.com/search") 

wait = WebDriverWait(driver, 10) 
departure = wait.until(EC.visibility_of_element_located((By.ID, "departureAirport"))) 
departure = Select(departure) 

departure.select_by_visible_text("Hong Kong (HKG)") 

arrival = Select(driver.find_element_by_id("arrivalAirport")) 
arrival.select_by_visible_text("Melbourne (MEL)") 
0

Я попробовал этот код, он частично работает (по крайней мере, дата получения выбрано), но выбор в аэропорту вылета не является, я все еще удивляюсь, почему, пожалуйста, посмотрите, дает ли это начало. Когда я получу какое-то решение, я вернусь.

Driver.navigate().to("https://m.flyscoot.com/search"); 
    Driver.findElement(By.id("departureAirport")).click(); 
    Select Element = new Select(Driver.findElement(By.id("departureAirport"))); 
    Element.selectByVisibleText("Singapore (SIN)"); 

    Driver.findElement(By.id("date-depart-display")).click(); 
    Thread.sleep(10); 
    Driver.findElement(By.xpath("//*[@id='ui-datepicker-div']/div[1]/table/tbody/tr[3]/td[4]/a")).click(); 
Смежные вопросы