当前位置: 首页 > 知识库问答 >
问题:

selenium webdriver在带有firefox浏览器的无头Linux上使用python在下拉菜单中选择一个选项

屈升
2023-03-14

我有以下代码:

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

输出:

“寻找工作-沃尔玛加拿大职业”

问题是,我不知道如何在“加拿大城市”字段中选择“卡尔加里”。我尝试了许多不同的方法,但仍然不起作用。你能帮忙吗?

注意:我可以选择选项,并且我的代码在非headless环境Windows机器中工作,这里是python selenium webdriver选择选项不工作。我现在处理的是无头Ubuntu,因此浏览器并没有在任何物理显示器上真正打开。

提前再次感谢。

共有2个答案

魏熠彤
2023-03-14

测试溶液:

答案是使用PhantomJS无头Webkit浏览器,它将在Windows和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()
山翼
2023-03-14

在这里,我会给你代码。请检查一下。

# -*- 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()
 类似资料:
  • 你好,我正在使用selenium,并且已经成功地设置了id历史的文本字段,但是无法从

  • 我想从下面的列表中选择一个使用selenium的选项: 这里 但问题是没有列表可供选择。 在此输入图像说明 我到目前为止的代码: 需要帮助!!

  • 我想让木偶演员从下拉框中选择使用: await Page.Select(选择器,值); 这里是方法,如何我想要得到的选项。 等待页面。选择('#dropdown','//select[@id=“dropdown”]//option[contains(@value,“xxa1”)]'); puppeteer中的“values”可能不能替换为xpath参数。CMIIW.但我能用另一种方法解决吗? 任何

  • 我正在编写一个python脚本,它将调用一个网页,并从下拉列表中选择一个选项来下载该文件。为了完成这个任务,我使用chropath。它是一个浏览器扩展,可以为您提供网页上任何按钮或字段的相对xpath或id,我们可以使用它从python脚本调用它。 上图显示了下拉菜单,其中我必须选择作为年份并下载文件。在图像的下部,您可以看到我使用了来获取下拉菜单的相对xpath,即 下面是我使用的代码: 从上面

  • 当使用时,我无法在火狐浏览器中选择任何下拉列表。我得到了: 元素不可见异常 以下是一些更详细的信息: 堆栈错误: 组织。openqa。硒。ElementNotVisibleException:元素不可见(警告:服务器未提供任何stacktrace信息)命令持续时间或超时:15毫秒生成信息:版本:“未知”,版本:“2aa21c1”,时间:“2016-08-02 14:59:43-0700”系统信息:

  • 问题内容: 我正在一个涉及使用PHP脚本自动填充选择框的网站上工作。一切都很好,除了问题是我用来填充文本框的标题非常长(它们是期刊文章和演示文稿标题)。下拉框延伸到最长元素的宽度,该元素延伸超出屏幕边缘,因此使滚动条无法触及。我尝试了多种尝试使用CSS手动将下拉框设置为特定宽度的方法,但到目前为止都无济于事。我最好地完成了将“选择”框设置为特定宽度的操作,但是下拉菜单本身的宽度要大得多。 任何对此