0

我有這樣的代碼:硒的webdriver選擇使用python無頭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() 

輸出:

「搜索職位 - 沃爾瑪加拿大的職業」

問題是我不知道如何選擇「加拿大城市」領域的「卡爾加里」。我嘗試了許多不同的方法,但仍然無效。你能幫忙嗎?

注意:我可以選擇選項,我的代碼可以在非無人機環境的Windows機器上工作,這裏是python selenium-webdriver select option does not work。我現在正在處理生產無頭的Ubuntu,因此瀏覽器並沒有真正在任何物理顯示器上打開。

再次提前致謝。

回答

0

測試的解決方案:

這個問題的答案是使用PhantomJS無頭WebKit瀏覽器,它會在兩個Window和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()」 - 這是一個點,我們正在處理無頭瀏覽器。我不知道你爲什麼在Linux環境下給出(「chromedriver.exe」),但我必須刪除整行,並用「driver = webdriver.Firefox(capabilities = firefox_capabilities)」取代。你可以看看它嗎? – Dung

+0

我正在使用windows,而不是Linux,並且在windows中工作很完美 – Piyush

+0

正如你所看到的,我特意要求無頭Linux。但是謝謝你的時間。 – Dung

相關問題