我正在使用下面的显式等待来检查元素是否可点击.
WebDriverWait(driver, 30).until(
expected_conditions.element_to_be_clickable((By.CSS_SELECTOR, "#search")))
Run Code Online (Sandbox Code Playgroud)
但我得到错误
<class 'selenium.common.exceptions.WebDriverException'>
Message: The command 'GET /session/.../displayed' was not found.
Run Code Online (Sandbox Code Playgroud)
如果我使用time.sleep()它工作正常而不是explicir等待它工作正常.我已经初始化了safari驱动程序
from selenium.webdriver import Safari
driver = Safari()
Run Code Online (Sandbox Code Playgroud)
这是堆栈跟踪
File "/Users/Library/Python/2.7/lib/python/site-packages/selenium/webdriver/support/wait.py", line 71, in until
value = method(self._driver)
File "/Users/Library/Python/2.7/lib/python/site-packages/selenium/webdriver/support/expected_conditions.py", line 283, in __call__
element = visibility_of_element_located(self.locator)(driver)
File "/Users/Library/Python/2.7/lib/python/site-packages/selenium/webdriver/support/expected_conditions.py", line 127, in __call__
return _element_if_visible(_find_element(driver, self.locator))
File "/Users/Library/Python/2.7/lib/python/site-packages/selenium/webdriver/support/expected_conditions.py", line 147, in _element_if_visible
return element if element.is_displayed() == visibility else False
File "/Users/Library/Python/2.7/lib/python/site-packages/selenium/webdriver/remote/webelement.py", line 490, in is_displayed
return self._execute(Command.IS_ELEMENT_DISPLAYED)['value']
File "/Users/Library/Python/2.7/lib/python/site-packages/selenium/webdriver/remote/webelement.py", line 628, …Run Code Online (Sandbox Code Playgroud) 将visual studio中的selenium更新为3.0,firefox更新为47.0,现在我尝试使用本地webdriver模式时出现此错误:geckodriver.exe文件不存在于当前目录或PATH环境变量的目录中.
当我使用远程模式(seleniumhub)时,即使它使用firefox 45.0版本也能正常工作.
试图搜索一些例子,但没有为c#找到任何东西,只为java而且仍然无法使它工作.
我的webdriver设置:
switch (ConfigurationManager.AppSettings["WebDriverMode"].ToLower())
{
case "local":
switch (ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower())
{
case "firefox":
driver = new AdvancedFirefoxDriver();
break;
case "ie":
driver = new AdvancedInternetExplorerDriver();
break;
case "chrome":
driver = new AdvancedChromeDriver();
break;
default:
throw new NotImplementedException(string.Format("WebDriverBrowserCapabilities of \"{0}\" is not implemented for {1} mode", ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower(), ConfigurationManager.AppSettings["WebDriverMode"].ToLower()));
}
break;
case "remote":
var huburl = new Uri(ConfigurationManager.AppSettings["SeleniumHubAddress"]);
DesiredCapabilities capabilities;
switch (ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower())
{
case "firefox":
capabilities = DesiredCapabilities.Firefox();
break;
case "ie":
capabilities = DesiredCapabilities.InternetExplorer();
break;
case "chrome":
capabilities = DesiredCapabilities.Chrome(); …Run Code Online (Sandbox Code Playgroud) 由于我升级到最新的Selenium版本,我的Firefox驱动程序无法正常工作.未能通过搜索Google/Stack找到答案我希望有人在这里有答案.
我已经构建了一个页面对象模型,用于登录网页,单击管理站点并填写用户名/密码+提交.此代码是为Selenium 2.53.6编写的,但仍适用于IE和Chrome.失败的部分是这行代码:
driver.find_element_by_xpath(locators["login.open"]).click()
Run Code Online (Sandbox Code Playgroud)
定位器是:
locators["login.open"] = "//*[@href='//www.phptravels.net/admin']"
Run Code Online (Sandbox Code Playgroud)
既然它在IE和Chrome中运行,那么Firefox不能再让我感到困惑.click()了吗?
我没有在我的控制台中收到错误消息,它只是没有单击管理站点按钮.这可能与Selenium 3/geckodriver的给定Firefox版本有关吗?
所有驱动程序都是最新的 pip
我正在使用这个网站练习我的Selenium:http://phptravels.com/demo/
编辑(1):我尝试使用Firefox版本48和49 - 仍然无法正常工作
编辑(2):geckodriver配置了声明的Firefox二进制文件,但驱动程序仍未执行 .click()
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
binary = FirefoxBinary('path/to/binary')
driver = webdriver.Firefox(firefox_binary=binary)
Run Code Online (Sandbox Code Playgroud)
编辑(3):我使用is_displayed()检查xpath定位器是否存在该元素,然后返回True.所以我知道它可以找到元素.
编辑(4):1)尝试按照建议的夜间构建,不工作.2)尝试使用find_element_by_link_text,也无法正常工作.3)尝试了各种版本的geckodriver(10.0,11.0,11.1为32和64位所有版本)
编辑(5):"Firefox的插件容器已停止工作"每次测试用例失败时都会始终生成.
编辑(6):问题的可能解决方案:我在另一个网站上做了另一个测试,Firefox成功执行了.click().在.click()失败的第一个目标网页上是一个巨大的JavaScript,当你打开页面时运行.这可能会搞砸geckodriver在javascript页面上执行.click()的能力.
编辑(7):使用带键库的.send_keys(Keys.RETURN),但如果您正在使用POM,则可能需要进行其他重新配置.明确地做一些时间.睡眠会让你解决,但目前使用Selenium 3 + Firefox/geckodriver进行网页浏览器自动化仍然很脆弱.如果你需要测试Firefox,请降级到最后稳定版本(2.53.6)(注意:最新版本的Firefox无法运行).
在程序中使用用户身份验证代理的最佳/最简单方法是什么?我目前有这个,但我需要在浏览器打开时填写用户名和密码.
from selenium import webdriver
PROXY = "123.123.123.243:80"
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--proxy-server=http://{}".format(PROXY))
print(chrome_options.arguments)
chrome = webdriver.Chrome(executable_path="drivers/chromedriver",chrome_options=chrome_options)
chrome.get("https://www.ipinfo.io")
Run Code Online (Sandbox Code Playgroud) 最近升级到 Selenium 3.7 并遇到错误。
错误跟踪日志:
Debug 1 Debug 2 在端口 2198 上启动 ChromeDriver 2.33.506106 (8a06c39c4582fbfbab6966dbb1c38a9173bfb1a2) 仅允许本地连接。线程“main” org.openqa.selenium.WebDriverException 中的异常:等待驱动程序服务器启动超时。构建信息:版本:'3.7.1',修订:'8a0099a',时间:'2017-11-06T21:07:36.161Z' 系统信息:主机:'Maggies-MacBook-Pro-2.local',ip: '192.168.1.6', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.6', java.version: '1.8.0_121' 驱动信息:driver.version: ChromeDriver 在 org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:192) 在 org.openqa.selenium.remote.service.DriverService.start(DriverService.java:178) 在 org.openqa.selenium。偏僻的。http://localhost:2198/status]在 org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:100) 在 org.openqa.selenium.remote.service.DriverService.waitUntilAvailable( DriverService.java:187) ... 9 导致:java.util.concurrent.TimeoutException at java.util.concurrent.FutureTask.get(FutureTask.java:205) at com.google.common.util.concurrent.SimpleTimeLimiter .callWithTimeout(SimpleTimeLimiter.java:147) 在 org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:75) ... 10 更多
代码:
public static void main (String args[]){
System.out.println("Debug 1");
System.setProperty("webdriver.chrome.driver", "/Users/maggie/Documents/ToolsQA/Libs/chromedriver");
System.out.println("Debug 2");
WebDriver driver = new ChromeDriver();
System.out.println("Debug 3");
driver.get("http://www.google.com");
driver.quit();
} …Run Code Online (Sandbox Code Playgroud) 如何在硒3中执行webdriver支持的硒?
Selenium 3最近取消了名为'webdriver backed selenium'的功能
我必须执行鼠标悬停,键入这样的操作,这在Selenium 3中不再受支持.
selenium = new WebDriverBackedSelenium(driver, "http://www.google.com");
selenium.openWindow("http://www.google.com", "google");
selenium.mouseOver(anElement);
Run Code Online (Sandbox Code Playgroud)
我已尝试使用moveToElement方法,但它不会在我的网站中执行.这就是我在Selenium 2(WebDriver)中使用webdriver支持的selenium的原因.
在Selenium 3中我需要做些什么来解决这个问题
selenium automation browser-automation selenium-rc selenium3
Firefox - 51.0.1 Selenium - 3.0.5 Ubuntu - 16.04(64 位)
这是我的代码的样子:
profile = Selenium::WebDriver::Firefox::Profile.new
profile['browser.download.dir'] = "/tmp/webdriver-downloads"
profile['browser.download.folderList'] = 2
profile['browser.helperApps.neverAsk.saveToDisk'] = "application/pdf"
profile['pdfjs.disabled'] = true
driver = Selenium::WebDriver.for :firefox, :profile => profile
driver.get "https://s3.amazonaws.com/shopsocially-misc/vfs/vfs_test_sample.csv"
Run Code Online (Sandbox Code Playgroud)
请运行上面的代码,然后您会看到弹出窗口。
这是我得到的错误:
Selenium::WebDriver::Error::UnknownError: Failed to decode response from marionette
from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/response.rb:69:in `assert_ok'
from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/response.rb:32:in `initialize'
from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/http/common.rb:85:in `new'
from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/http/common.rb:85:in `create_response'
from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/http/default.rb:107:in `request'
from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/http/common.rb:63:in `call'
from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/w3c_bridge.rb:640:in `raw_execute'
from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/w3c_bridge.rb:615:in `execute'
from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/w3c_bridge.rb:126:in `get'
from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/common/navigation.rb:32:in `to'
from /var/lib/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/common/driver.rb:132:in `get'
from (irb):70
from …Run Code Online (Sandbox Code Playgroud) selenium3 ×7
selenium ×5
firefox ×2
python ×2
webdriver ×2
automation ×1
c# ×1
geckodriver ×1
java ×1
python-3.x ×1
safaridriver ×1
selenium-rc ×1