好的——问题似乎已经解决——请参阅下面的工作解决方案。
问题=
我查询的元素是谷歌广告部门,我想确保我们在所有平台上都提供广告。加载是异步的,所以我要确保等待页面加载。
当我从ruby shell(irb)手动驱动selenium时,我总是能够在IE版本9、10、11中找到元素。当我手动导航到浏览器堆栈的“Live”浏览器内IE仿真中的站点时也是如此。
但是——当我通过RSpec以编程方式运行与shell中相同的命令时——我的测试失败了大约50%。IE 11受到的打击最大,大多数测试都失败了。IE 10往往会好一点。
FirefoxChrome也通过了同样的测试。
依赖项:
ruby '2.3.0'
gem 'selenium-webdriver'
gem 'rspec'
gem 'curb', '~> 0.9.1'
有什么想法吗?
describe "Testing example.com in production with ie." do
it "loads ads on home page" do
caps = Selenium::WebDriver::Remote::Capabilities.internet_explorer
caps["browser_version"] = "11.0"
caps["os"] = "WINDOWS"
caps["os_version"] = "8"
caps["resolution"] = "1024x768"
caps["browserstack.debug"] = "true"
driver = Selenium::WebDriver.for(:remote,
:url => "http://<my_username>:<my_pw>@hub.browserstack.com/wd/hub",
:desired_capabilities => caps)
driver.navigate.to "http://www.example.com"
wait = Selenium::WebDriver::Wait.new(:timeout => 5) # seconds
verify = []
begin #
wait.until do
verify = driver.find_elements(:css => "div[id^="google_ads"]")
end
ensure
driver.quit
end
expected_ad_count = 5
expect( verify.count ).to eq expected_ad_count
end
end
解决方案=
driver = Selenium::WebDriver.for(:remote,
:url => "http://<my_username>:<my_pw>@hub.browserstack.com/wd/hub",
:desired_capabilities => caps)
driver.manage.timeouts.implicit_wait = 5
driver.navigate.to "http://www.example.com"
begin #
verify = driver.find_elements(:css => "div[id^="google_ads"]")
ensure
driver.quit
end
expected_ad_count = 5
expect( verify.count ).to eq expected_ad_count
而且——它起作用了!
根据您的测试,我相信您的脚本将继续执行,即使没有使用find\u elements(:css)定位的元素=
我建议您在测试中将显式等待替换为隐式等待。这将帮助您等到DOM中加载所有元素,然后继续执行测试。您可以在测试中使用以下命令来添加隐式等待:
<代码>驱动程序。管理超时。implicit\u wait=5秒
或者,您可以通过JavaScript或jQuery命令验证是否已将所有广告加载到网页上。完成后,您可以继续执行测试。
使用geckodriver和Firefox的无头和无头(有头??)版本 将chromedriver与Chrome的无头和无头版本一起使用 检查了pip3和Selenium是否都是最新的稳定版本 使用用户代理配置文件打开Chrome 使用随机用户代理配置文件(来自random_user_agent库)打开Chrome 硬编码最多等待30秒(time.sleep) 在请求中加载页面(事后看来,如果我在
但是,对于以下所有使用chromedriver的测试,浏览器都不能成功导航到URL。 浏览器启动,瞬间显示字符数据;出现在地址栏中(就像第一个测试中一样),然后将正确的URL插入到地址栏中。但是,页面永远不会加载,你得到了标准的chrome这个网页不可用的消息,在浏览器的正文/画布上有两个按钮reload和更多。 这是已知的问题吗? 以下异常将被删除: NosuchWindowException:
嘿,伙计们,我正在为Mozilla Firefox运行一个使用SELENIUM-IDE进行Web自动化的脚本。在脚本中,我正在搜索网页上的“下一步”按钮,并想知道它是否可用。如果是这样,单击它并转到下一页,如果不是重新启动脚本的话。当在没有下一个按钮的页面上运行时,我会收到一个错误和一个 "测试用例失败" 我使用的命令: 在日志结果中,我得到: 有什么想法吗伙计们?
我使用及其构建定义使用Selenium运行端到端测试。 更具体地说,我将web应用程序部署到测试环境中,然后使用基于Selenium的库针对该测试URL运行测试。对于CI,我使用PhantomJS或Google Chrome无头。 为了清楚起见,这样的测试是:“打开URL/单击链接/断言URL已更改。” 我的问题是--有没有可能为此目的使用BrowserStack?如果是的话,你能给我指一些教程或
我在这里给我的课做了注解 此外,还对我的测试方法进行了这样的注解 最后,配置我的build.gradle defaultConfig和依赖项,如下所示