Python с Selenium выпадающий список - PullRequest
0 голосов
/ 26 ноября 2018

Я не могу получить автоматическое создание учетной записи с выбранной group_option, используя selenium with python.Я пробовал несколько решений, но все равно это не работает.сайт является формой .php, пожалуйста, смотрите коды, которые я использовал.Я в Linux, а не в Windows.

test-1

driver = webdriver.PhantomJS()

select = Select(driver.find_element_by_name('group_option[]'))
select.select_by_value("Test")
driver.find_element_by_name("submit").click()

website.php

<select onchange="javascript:setStringText(this.id,'group')" id="usergroup" name="group_option[]" class="form" tabindex="105">
    <option value="">Select Groups</option>
    <option value=""></option>  
    <option value="Test"> Test </option>
    <option value="Test1"> Test1 </option>
</select>

Ответы [ 3 ]

0 голосов
/ 26 ноября 2018
from selenium import webdriver
from selenium.webdriver.support.ui import Select

driver = webdriver.Firefox()
driver.get('url')

select = Select(driver.find_element_by_xpath("//select[@id='usergroup']"))

# select by visible text
select.select_by_visible_text('Test')
 OR
# select by value 
select.select_by_value('Test')
0 голосов
/ 26 ноября 2018

Чтобы выбрать вариант с текстом как Тест , вы можете использовать следующее решение:

select = Select(driver.find_element_by_xpath("//select[@class='form' and @id='usergroup'][contains(@name,'group_option')]"))
select.select_by_value("Test")

Обновить

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

  • Опция A:

    select = Select(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//select[@class='form' and @id='usergroup'][contains(@name,'group_option')]"))))
    select.select_by_value("Test")
    
  • Вариант B:

    select = Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@class='form' and @id='usergroup'][contains(@name,'group_option')]"))))
    select.select_by_value("Test")
    
  • Примечание : необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
0 голосов
/ 26 ноября 2018
from selenium import webdriver
from selenium.webdriver.support.ui import Select

driver = webdriver.Firefox()
driver.get('url')

select = Select(driver.find_element_by_id('usergroup'))

выбор по значению

select.select_by_value('Test')
...