Tag: webdriver

Selenium WebDriver:等待带有JavaScript(JS)的复杂页面加载

我有一个Web应用程序来testingselenium。 页面加载时有很多JavaScript运行。 这个JavaScript代码写得不是很好,但是我不能改变任何东西。 因此,使用findElement()方法等待元素出现在DOM中不是一个选项。 我想在Java中创build一个通用函数来等待页面加载,一个可能的解决scheme是: 运行WebDriver的JavaScript脚本,并将document.body.innerHTML的结果存储在stringvariablesbody 。 将bodyvariables与body的先前版本进行比较。 如果他们是相同的然后设置递增计数器notChangedCount否则设置notChangedCount为零。 等待一个小时(例如50毫秒)。 如果页面在一段时间内没有改变(例如500毫秒),那么notChangedCount > = 10,否则退出循环,否则循环到第一步。 你认为这是一个有效的解决scheme?

如何处理Selenium中的打印对话框?

我必须处理打印对话框(在浏览器中单击ctrl-p时出现的对话框)。 我试着用: Alert printDialog = driver.switchTo().alert(); printDialog.dismiss(); 但它没有工作。 我也无法赶上它的窗户把手,因为这不是一个窗口… 是否有可能处理这些对象,以及如何?

澄清混合原因Selenium doc的隐式和显式等待

我正在阅读SeleniumHQ文档,并且遇到以下声明。 警告:不要混合隐式和显式的等待,这样做会导致不可预知的等待时间,例如设置10秒的隐式等待和15秒的显式等待,可能导致20秒后发生超时。 出于某种原因,我无法理解这一点。 总超时20秒是我的主要困惑点。 任何人都可以解释,如果我错过了什么? 编辑 我的问题不是混合这些等待的实施/后果。 这完全是关于文档的超时声明和计算。 第二编辑 看起来像下面的testing文档是正确的。 我仍然需要解释 。 只是隐含的等待 using System; using System.Diagnostics; using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; namespace Test { [TestFixture] public class Test { private IWebDriver _webDriver; [Test] public void ExplicitVsImplicitWaitTest() { _webDriver = new ChromeDriver(); _webDriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); _webDriver.Navigate().GoToUrl("https://www.google.com/"); _webDriver.Manage().Window.Maximize(); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); try { //new […]

Webdriver:file upload

有没有办法与webdriver中的file upload框交互? path被放入的表单字段是只读的,所以我不能写入。

seleniumwebdriver不能点击页面外的链接

我有一个Selenium WebDriver的问题。 我尝试点击窗口页面外的链接(您需要向上滚动以查看)。 我目前的代码是相当标准的: menuItem = driver.findElement(By.id("MTP")); menuItem.click(); // I also tried menuItem.sendKeys(Keys.RETURN); 我知道我可以向上滚动,在这种情况下,它会起作用。 但是如果你有一个长长的项目列表,你不一定知道你需要向下滚动多less。 有什么办法可以点击不在页面可见部分的链接(但是如果你滚动的话就可以看到)? 作为一个方面说明,我使用Firefox,但我打算使用IE7 / 8/9和Chrome。 任何帮助将不胜感激。 编辑:恐怕我不能给源代码,因为我工作的公司不允许它,但我可以给我点击链接的代码: <div class="submenu"> <div id="MTP">Link title</div> </div> 当链接可见时,完全相同的代码工作,只有当链接不可用时才起作用。 编辑2:其实,奇怪的是,它不会引发任何exception,只是去下一个指令。 所以基本上,会发生什么是: menuItem = driver.findElement(By.id("MTP")); // no exception menuItem.click(); // no exception //… some code ensuring we got to the next page: timeout reached driver.findElement(By.id("smLH")).click(); // NoSuchElementException, […]

需要通过CSS在selenium中查找元素

我想在<h5>find这个链接的元素“us states”。 我正在Craigslist中尝试这个。 任何帮助将不胜感激 这是url: http : //auburn.craigslist.org/ <html class=""> <head> <body class="homepage w1024 list"> <script type="text/javascript"> <article id="pagecontainer"> <section class="body"> <table id="container" cellspacing="0" cellpadding="0" <tbody> <tr> <td id="leftbar"> <td id="center"> <td id="rightbar"> <ul class="menu collapsible"> <li class="expand s"> <li class="s"> <li class="s"> <h5 class="ban hot">us states</h5> <ul class="acitem" style="display: none;"> </li> <li class="s"> <li […]

如何使用Selenium WebDriver与java从下拉列表中select一个项目?

如何使用Selenium WebDriver与Java从性别(如男性,女性)下拉列表中select一个项目? 我已经试过了 WebElement select = driver.findElement(By.id("gender")); List<WebElement> options = select.findElements(By.tagName("Male")); for (WebElement option : options) { if("Germany".equals(option.getText())) option.click(); } 我上面的代码没有工作。

WebDriver:检查一个元素是否存在?

如何检查Web驱动程序是否存在元素? 是真的使用try catch唯一可能的方法吗? boolean present; try { driver.findElement(By.id("logoutLink")); present = true; } catch (NoSuchElementException e) { present = false; }

如何在Selenium Webdriver中模拟HTML5拖放?

我正在使用Python 2.7和Selenium 2.44。 我想在Selenium WD中自动拖放操作,但根据其他相关文章,Selenium不支持HTML5中的操作 。 有没有什么办法来模拟Python中的拖放? 这是我试过的代码: driver = webdriver.Firefox() driver.get("http://html5demos.com/drag") target = driver.find_element_by_id("one") source = driver.find_element_by_id("bin") actionChains = ActionChains(driver) actionChains.drag_and_drop(target, source).perform() 并没有工作。

当使用Chrome浏览器运行WebDriver时,即使浏览器正常启动,也会显示“只允许本地连接”

当我使用WebDriver运行Chrome浏览器时,我在控制台上收到以下消息。 请让我知道如何解决它。 “在端口22582上启动ChromeDriver(v2.10.267521)”“只允许本地连接。 这是我的示例代码: public class Browserlaunch { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "C:\\chromedriver_win32 \\chromedriver.exe"); WebDriver driver = new ChromeDriver() ; driver.get("http://webdunia.com"); driver.close(); driver.quit(); } }