0

Ich habe diesen Code:Selen WebDriver eine Option im Dropdown-Menü wählen Sie Python auf kopflos Linux mit Firefox-Browser

#!/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() 

die Ausgabe:

"Search Jobs - Walmart Kanada Karriere"

Das Problem ist, dass ich nicht weiß, wie man "Calgary" im Feld "Kanadische Städte" auswählt. Ich habe viele verschiedene Möglichkeiten ausprobiert, aber es funktioniert immer noch nicht. Kannst du bitte helfen?

Hinweis: Ich kann Option auswählen und mein Code funktioniert in einer Non-Headless-Umgebung Windows-Maschine, hier ist es python selenium-webdriver select option does not work. Ich beschäftige mich jetzt mit der Produktion von kopflosem Ubuntu, daher ist der Browser auf keiner physischen Anzeige wirklich geöffnet.

Danke nochmals im Voraus.

Antwort

0

Getestete Lösung:

Die Antwort darauf ist PhantomJS den Headless Webkit-Browser, wird es mit dem exakt gleichen Code sowohl auf Window und Linux arbeiten. Hier ist Beispiel:

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

Hier gebe ich Ihnen Code. Überprüfen Sie bitte das.

# -*- 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

ich diesen Fehler „selenium.common.exceptions.ElementNotVisibleException: Nachricht: Element ist nicht sichtbar“ bekam genau Linie „ele.click()“ - und das ist der Punkt, von dem wir beschäftigen sich mit kopflosem Browser. Ich bin mir nicht sicher, warum Sie in einer Linux-Umgebung ("chromedriver.exe") angegeben haben, aber ich musste die gesamte Zeile entfernen und durch "driver = webdriver.Firefox (capabilities = firefox_capabilities)" ersetzen. Kannst du bitte hineinsehen? – Dung

+0

Ich arbeite an Windows nicht Linux und in Windows funktioniert es perfekt – Piyush

+0

Wie Sie sehen können, bat ich speziell für Headless Linux. Aber danke für deine Zeit. – Dung

Verwandte Themen