这是我第一次尝试编写python脚本 -
我正在尝试在IIS服务器上的localhost上运行测试用例。这是当地的环境。我做了以下更改:
我必须始终'允许' /'阻止' geoLocation警报和Firefox需要浏览器功能才能设置。
因此,
以下是代码:
class CheckGeoLocationsDropDown():
def test_check_geo_locations_dropdown(self):
try:
selenium_profile = webdriver.FirefoxProfile()
# media.navigator.permission.disabled is set in the FF to True, however, as FF creates new Profile, do not know how to do.
#selenium_profile.set_preference('media.navigator.permission.disabled', True)
# Setting no proxy or socks proxy to 127.0.0.1 and port 80
selenium_profile.set_preference("network.proxy.socks", '127.0.0.1')
selenium_profile.set_preference("network.proxy.socks_port", 80)
selenium_profile.update_preferences()
baseUrl = 'http://127.0.0.1:80'
# os.environ['no_proxy'] = '127.0.0.1:80'
# Create a desired capabilities object as a starting point.
capabilities = DesiredCapabilities.FIREFOX.copy()
capabilities['platform'] ="WINDOWS"
capabilities['version'] = "7"
capabilities['nativeEvents'] = True
capabilities['unexpectedAlertBehaviour'] = 'Accept'
# Instantiate an instance of Remote WebDriver with the desired capabilities.
driver = webdriver.Remote(desired_capabilities=capabilities,
command_executor='http://127.0.0.1:80',
browser_profile=selenium_profile)
#driver.find_element_by_css_selector('#exceptionDialogButton')
driver.maximize_window()
driver.get(baseUrl)
# driver.find_element_by_css_selector('#exceptionDialogButton')
# _select_geo_locations_dropdown(driver)
# print(driver.title)
driver.implicitly_wait(5)
driver.refresh()
driver.close()
item = '*'
print(item * 40 + 'Geo Locations Dropdown selected successfully' + item * 40)
except NoSuchElementException:
print("Couldn't Run Script")
ff = CheckGeoLocationsDropDown()
ff.test_check_geo_locations_dropdown()
我尝试阅读Python文档,但是我无法找到我在这里做错了什么。如果我没有提供足够的信息,请接受我的道歉。任何帮助,将不胜感激。
更新时间:1/29/201:
所以我需要检测地理定位权限请求警报。我应该能够允许/阻止地理位置共享。由于Selenium为每个实例创建了一个新的FF配置文件,因此我设置了首选项selenium_profile.set_preference('media.navigator.permission.disabled', True)
我现在已添加到
行capabilities['nativeEvents'] = True
capabilities['unexpectedAlertBehaviour'] = 'Accept'
它仍然犯同样的错误。
参考使用:
答案 0 :(得分:0)
使用错误堆栈跟踪的内容提供的信息很难回答/推荐任何内容。但是我能够成功地重现这个问题。
如果查看selenium.webdriver.remote.webdriver
的当前实现,则将其定义为:
class selenium.webdriver.remote.webdriver.WebDriver(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=None, browser_profile=None, proxy=None, keep_alive=False, file_detector=None, options=None)
如果您查看公共方法 set_preference(self, key, value)
的源代码,我们可以在配置文件中配置以下首选项:
self.default_preferences[key] = value
我没有找到与您提到的偏好匹配的偏好:
set_preference('media.navigator.permission.disabled', True)
因此您会看到错误。
根据您的问题更新,您需要检测地理位置权限并能够允许/阻止地理位置共享,您可以添加以下代码行:
opt.add_experimental_option("prefs", { \
"profile.default_content_setting_values.geolocation": 1,
})
您可以找到详细的讨论here。