0

У меня есть этот код:селена WebDriver выберите вариант в раскрывающемся меню с помощью питона на обезглавленном Linux с браузером Firefox

#!/usr/bin/env python 
from pyvirtualdisplay import Display 
from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
from selenium.webdriver.support.ui import Select 
from pyquery import * 
# declaration of variables 
display = Display(visible=0, size=(800, 600)) 
display.start() 
firefox_capabilities = DesiredCapabilities.FIREFOX 
firefox_capabilities['marionette'] = True 
# Initialize 
driver = webdriver.Firefox(capabilities=firefox_capabilities) 
driver.maximize_window() 
driver.implicitly_wait(10) 
driver.get('https://sjobs.brassring.com/TGWebHost/searchopenings.aspx?partnerid=25222&siteid=5011') 
print driver.title 
# below does not work 
# driver.find_element_by_xpath(".//*[@id='Question4138__FORMTEXT62']/option[37]").click() 
# selectsoptions = driver.find_element_by_id("Question4138__FORMTEXT62") 
# for option in selectsoptions .find_elements_by_tag_name('option'): 
    # if option.text == 'Calgary': 
    # option.select() 
    # break 
driver.find_element_by_id('ctl00_MainContent_submit1').click() 
# call a sub-routine function def (not shown here) 
save_rows(driver.find_element_by_id('idSearchresults')) 
driver.close() 
display.stop() 

выход:

«Поиск вакансий - Walmart Канада Карьера»

Проблема в том, что я не знаю, как выбрать «Калгари» в поле «Канадские города». Я пробовал много разных способов, но все равно это не работает. Не могли бы вы помочь?

Примечание: Я могу выбрать вариант, и мой код работает в среде без звука без окон Windows, здесь это python selenium-webdriver select option does not work. Теперь я имею дело с выпуском безголового Ubuntu, поэтому браузер на самом деле не открывается на любом физическом дисплее.

Еще раз спасибо.

ответ

0

Испытан Решение:

Ответ на это с помощью PhantomJS браузера Безголового Webkit, он будет работать на оба окнах и Linux с точно таким же кодом. Вот пример:

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.support.ui import Select 
from pyquery import * 
import json 
import csv 
import sys 
import time 

def save_rows(elements): 
    rows = elements.find_element_by_id('idSearchresults_dataBody') 
    for row in rows.find_elements_by_tag_name('tr'): 
     link = row.find_element_by_css_selector('a').get_attribute('href') 
     print link 

driver = webdriver.PhantomJS(service_args=['--ssl-protocol=any']) 
driver.implicitly_wait(10) 
driver.get('https://sjobs.brassring.com/TGWebHost/searchopenings.aspx?partnerid=25222&siteid=5011') 

text = "Calgary" 
currentselection = driver.find_element_by_id("Question4138__FORMTEXT62") 
select = Select(currentselection) 
select.deselect_by_visible_text("All") 
select.select_by_visible_text(text) 

driver.find_element_by_id('ctl00_MainContent_submit1').click() 

save_rows(driver.find_element_by_id('idSearchresults')) 

driver.quit() 
0

Здесь я дам вам код. Пожалуйста, проверь это.

# -*- coding: utf-8 -*- 

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import time 

driver = webdriver.Chrome("chromedriver.exe") 
driver.get("https://sjobs.brassring.com/TGWebHost/searchopenings.aspx?partnerid=25222&siteid=5011") 
ele = driver.find_element_by_xpath("//option[contains(text(),'Calgary ')]") 
print ele 
driver.execute_script("arguments[0].scrollIntoView()",ele) 
time.sleep(2) 
ele.click() 
+0

Я получил эту ошибку «selenium.common.exceptions.ElementNotVisibleException: Сообщение: Элемент не виден» точно линии «ele.click()» - и это точка, которую мы имеют дело с безголовым браузером. Я не уверен, почему вы дали («chromedriver.exe») в среде Linux, но мне пришлось удалить всю строку и заменить «driver = webdriver.Firefox (возможности = firefox_capabilities)». Можете ли вы заглянуть в нее? – Dung

+0

Я работаю над окнами, а не в Linux, и в окнах он работает отлично – Piyush

+0

Как вы можете видеть, я просил Linux без особого внимания. Но спасибо, как за ваше время. – Dung

Смежные вопросы