标签: selenium-webdriver

Selenium WebDriver - 测试元素是否存在

有没有办法测试元素是否存在?任何findElement方法都会以异常结束,但这不是我想要的,因为它可能是一个元素不存在而且没关系,这不是测试的失败,因此异常不能成为解决方案.

我发现这篇文章:Selenium c#Webdriver:等到元素存在 但是这是C#而我不是很擅长.任何人都可以将代码翻译成Java吗?我很抱歉,我在Eclipse中尝试过但是我没有把它直接用到Java代码中.

这是代码:

public static class WebDriverExtensions{
    public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds){

        if (timeoutInSeconds > 0){
            var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
            return wait.Until(drv => drv.FindElement(by));
        }

        return driver.FindElement(by);
    }
}
Run Code Online (Sandbox Code Playgroud)

java selenium selenium-webdriver

153
推荐指数
6
解决办法
32万
查看次数

Selenium - Python - 下拉菜单选项值

我需要从下拉菜单中选择一个元素.

例如,打开这个:

<select id="fruits01" class="select" name="fruits">
  <option value="0">Choose your fruits:</option>
  <option value="1">Banana</option>
  <option value="2">Mango</option>
</select>
Run Code Online (Sandbox Code Playgroud)
  1. 所以首先我要点击它.我这样做:

    inputElementFruits = driver.find_element_by_xpath("//select[id='fruits']").click()
    
    Run Code Online (Sandbox Code Playgroud)

(好吧,打开菜单)

  1. 在我必须选择好元素之后,让我们说芒果.我尝试了不同的东西,Mango但它没有用.

python selenium webdriver web-scraping selenium-webdriver

146
推荐指数
9
解决办法
21万
查看次数

WebDriver在等待特定条件时刷新网页

我正在寻找更优雅的方式来在测试期间刷新网页(我使用Selenium2).我只是发送F5键,但我想知道驱动程序是否有刷新整个网页的方法这是我的代码

    while(driver.findElements(By.xpath("//*[text() = 'READY']")).size() == 0 )
        driver.findElement(By.xpath("//body")).sendKeys(Keys.F5);
        //element appear after text READY is presented      
    driver.findElement(By.cssSelector("div.column a")).click();    
Run Code Online (Sandbox Code Playgroud)

也许是在手动刷新页面上查找元素的更好解决方案

selenium refresh webdriver selenium-webdriver

140
推荐指数
8
解决办法
29万
查看次数

Selenium Webdriver可以在后台静默打开浏览器窗口吗?

我有一个运行许多测试的selenium测试套件,在每个新测试中,它打开了我打开的任何其他窗口顶部的浏览器窗口.在当地环境中工作时非常震动.有什么办法告诉selenium或操作系统(MAC)在后台打开窗口?

webdriver selenium-grid selenium-webdriver

139
推荐指数
8
解决办法
18万
查看次数

Webdriver无法在45000 ms后连接到端口7055上的主机127.0.0.1

我有运行测试的盒子.看起来Jenkins会ssh并执行正在运行的特定作业中描述的命令.

在这里,我试图运行我的Selenium Webdriver测试,但它告诉我在启动firefox时出错.最终的想法是完全在这个盒子上运行网络测试,并拍摄一些错误的截图.

我正在使用selenium-java-2.25.jar,firefox 10,linux OS.

有趣的是,我可以手动ssh到框中,临时从盒子上的另一个用户复制魔术cookie(获得X隧道),做一个export DISPLAY=mydisplay:1.0,然后使用ant启动我的硒测试.这将带来firefox和测试就好了.

这里有各种各样的线程似乎有完全相同的问题,我想我已经尝试了大部分.这就是我所做的:

  • 重新启动该框,使用VNC重新登录.

  • 在运行selenium测试之前,在Jenkins中放置一个bash脚本来运行.bash脚本基本上只是做了一个export DISPLAY=mydisplay:1.0.它也执行xclock.这可以工作,因为我可以看到在VNC中显示xclock.

  • iptables已被关闭

  • firefox正确位于/ usr/bin/firefox中

  • sshd_config显示X11Forwarding为true.

  • 据称降级firefox帮助了一些人,但我不想这样做.无论如何,Webdriver应该支持FF 10.

但是,上述都没有解决问题.

它似乎不存在localhost上的端口7055甚至存在:

netstat -an | grep 7055 - 什么都没打印

这是我的/ etc/hosts所说的:

  1 127.0.0.1               localhost.localdomain localhost
  2 ::1             localhost6.localdomain6 localhost6
Run Code Online (Sandbox Code Playgroud)

也许它与localhost有关:7055不存在?我不确定从哪里开始.仍然,为什么错误输出说它display: :0.0在我指定时正在寻找mydisplay:1.0

最后我得到的错误输出:

[testng] org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
[testng] Xlib: connection to ":0.0" refused by server
[testng] Xlib: No protocol specified …
Run Code Online (Sandbox Code Playgroud)

x11 firefox selenium jenkins selenium-webdriver

138
推荐指数
7
解决办法
31万
查看次数

随机"元素不再附加到DOM"StaleElementReferenceException

我希望它只是我,但Selenium Webdriver看起来像是一场彻头彻尾的噩梦.Chrome webdriver目前无法使用,而其他驱动程序则非常不可靠,或者看起来如此.我正在与许多问题作斗争,但这里有一个问题.

随机地,我的测试将失败

"org.openqa.selenium.StaleElementReferenceException: Element is no longer attached 
to the DOM    
System info: os.name: 'Windows 7', os.arch: 'amd64',
 os.version: '6.1', java.version: '1.6.0_23'"
Run Code Online (Sandbox Code Playgroud)

我正在使用webdriver版本2.0b3.我已经看到FF和IE驱动程序发生这种情况.我可以阻止这种情况的唯一方法是Thread.sleep在异常发生之前添加实际调用.这是一个糟糕的解决方法,所以我希望有人可以指出我的错误,这将使这一切变得更好.

java automated-tests webdriver selenium-webdriver

137
推荐指数
3
解决办法
11万
查看次数

如何在Selenium Webdriver 2 Python中获取当前URL?

我想在Selenium进行一系列导航后获取当前网址.我知道有一个名为getLocation的命令用于ruby,但我找不到Python的语法.

python selenium selenium-webdriver

137
推荐指数
3
解决办法
14万
查看次数

125
推荐指数
11
解决办法
25万
查看次数

如何使用Java在Selenium WebDriver中执行鼠标悬停功能?

我想在下拉菜单中执行鼠标悬停功能.当我们将鼠标悬停在菜单上时,它会显示新选项.我尝试使用xpath单击新选项.但无法直接单击菜单.所以,作为我试图将鼠标悬停在下拉菜单上的手动方式,然后将单击新选项.

Actions action = new Actions(webdriver);
WebElement we = webdriver.findElement(By.xpath("//html/body/div[13]/ul/li[4]/a"));
action.moveToElement(we).build().perform();
Run Code Online (Sandbox Code Playgroud)

java selenium mouseover selenium-webdriver

124
推荐指数
6
解决办法
34万
查看次数

WebDriver:检查元素是否存在?

如何检查Web驱动程序是否存在元素?

真正使用try catch是唯一可行的方法吗?

boolean present;
try {
   driver.findElement(By.id("logoutLink"));
   present = true;
} catch (NoSuchElementException e) {
   present = false;
}
Run Code Online (Sandbox Code Playgroud)

java testing webdriver selenium-webdriver

121
推荐指数
5
解决办法
31万
查看次数