标签: webdriver

我可以使用Selenium Webdriver测试元素的顺序吗?

有一个表格,其中有3个字段,有3个不同的ID:

<fieldset>
<div><label for="field1">
 FIELD1
 </label>
 <textarea id="field1" name="field1" rows="10" cols="40"></textarea></div>


 <div><label for="field2">
  FIELD2
</label><textarea id="field2" name="field2" rows="10" cols="40"></textarea></div>


<div><label for="field3">
  FIELD3
</label><textarea id="field3" name="field3" rows="10" cols="40"></textarea></div>

</fieldset>
Run Code Online (Sandbox Code Playgroud)

现在,在我们的Scrum过程中有一个故事,它将FIELD3置于页面顶部,在FIELD1之上,因此新的字段顺序将为3,1,2.

我的问题是:有没有办法验证/断言订单?如果是,我如何使用Selenium Webdriver(java)自动测试?

java selenium webdriver

1
推荐指数
1
解决办法
3055
查看次数

了解Web驱动程序API

如果我理解W3C关于WebDriver API的信息,那么实现此API的浏览器可以通过使用RESTful API实现自动化.也就是说,我可以打开与浏览器的HTTP连接,并使用REST向它发送命令.

我还发现了这个Gist,它证实了我的猜测是正确的:Node.js脚本直接连接到已作为WebDriver服务器启动的PhantomJS.

到现在为止还挺好.

我现在没有得到的是为什么显然对于任何其他浏览器我仍然需要Selenium服务器.即使像webdriverjs这样的项目也要求我运行Selenium服务器.

我的问题是:为什么?

如果没有额外的Selenium服务器,是不是可以自动化浏览器?浏览器是否无法直接提供此API(如PhantomJS显然那样)?

请问有人可以解决这个问题吗?

selenium webdriver node.js

1
推荐指数
1
解决办法
148
查看次数

WebDriver和FirefoxDriver之间的区别

我是Selenium WebDriver的新手.谁能告诉我这两行之间有什么区别?

WebDriver driver = new FirefoxDriver();
Run Code Online (Sandbox Code Playgroud)

FirefoxDriver d = new FirefoxDriver();
Run Code Online (Sandbox Code Playgroud)

两者都推出了Firefox浏览器.那么为什么我们总是写第一行而不是第二行呢?

java selenium webdriver selenium-webdriver

1
推荐指数
1
解决办法
7588
查看次数

javascript中的WebDriver:如何检查元素是否存在?

如何检查硒中是否存在元素?

我试过了:

browser.driver.findElements(by.id('my-id'))

但它似乎没有用.

javascript selenium webdriver protractor

1
推荐指数
1
解决办法
4385
查看次数

set_preference不适用于FireFox配置文件

我有一个python脚本,它试图自动下载excel文件.我试图直接解决firefox配置文件,它工作正常:

path = '\\path\\to\\firefox\\default\\profile\\'
fp = webdriver.FirefoxProfile(path)
driver = webdriver.Firefox(firefox_profile=fp)
driver.maximize_window()
driver.get('url') 
driver.find_element_by_id('downloadButton').click()
time.sleep(5)
driver.close()
Run Code Online (Sandbox Code Playgroud)

但是当我尝试以编程方式设置配置文件时,它不起作用; 还有下载弹出窗口:

fp = webdriver.FirefoxProfile()
fp.set_preference('browser.download.folderList', 2)
fp.set_preference('browser.download.manager.showWhenStarting', False)
fp.set_preference('browser.download.dir', os.getcwd())
fp.set_preference('browser.helperApps.neverAsk.saveToDisk', 'text/csv/xls/xlsx')
driver = webdriver.Firefox(firefox_profile=fp)
driver.maximize_window()
driver.get('url') 
driver.find_element_by_id('downloadButton').click()
time.sleep(5)
driver.close()
Run Code Online (Sandbox Code Playgroud)

我也改了行fp.set_preference('browser.helperApps.neverAsk.saveToDisk', 'text/csv/xls/xlsx')fp.set_preference('browser.helperApps.neverAsk.saveToDisk', ('application/vnd.ms-excel')); 但没有变化.

知道我错了什么吗?

编辑1:

我试过了

fp.set_preference('browser.helperApps.neverAsk.saveToDisk', "text/plain, application/vnd.ms-excel, text/csv, text/comma-separated-values, application/octet-stream")
Run Code Online (Sandbox Code Playgroud)

fp.set_preference('browser.helperApps.neverAsk.saveToDisk', "text/plain, application/vnd.ms-excel, text/csv, text/comma-separated-values, application/octet-stream, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
Run Code Online (Sandbox Code Playgroud)

结果没有变化.

python firefox webdriver download selenium-webdriver

1
推荐指数
1
解决办法
5943
查看次数

通过Java中的Selenium Web驱动程序处理另存为对话框

我正在尝试使用Java中的Selenium脚本保存HTML页面,该脚本执行以下操作

  1. 打开网页。
  2. 触发右键单击事件。
  3. 单击另存为html选项。

现在的问题是,当脚本单击“另存为html”选项时,它会显示一个弹出窗口以保存html。

我已经设置了在Firefox中下载的默认选项,但是当我运行脚本时,它会不断显示我弹出窗口,我需要的是:-

  1. 当Firefox显示“另存为”对话框时,它将触发enter事件,以便可以使用Selenium脚本保存html。

java selenium automation webdriver selenium-webdriver

1
推荐指数
1
解决办法
1万
查看次数

selenium webdriver(c#)-循环访问选择菜单的最佳方法-然后验证元素样式是否更新?

我想遍历选择菜单中的所有可用选项,依次单击每个选项,然后确认单击每个选项将用宽度和高度值更新特定的元素。

这是选择菜单的代码:

 <span id="SizeSelectContainer" class="dropdownButton" style="min-width: 100px; max-width: 120px;">
            <select id="SizeSelect" title="Zoom" tabindex="23" data-l10n-id="zoom" style="min-width: 126px;">
                <option id="SizeAutoOption" title="" value="auto" selected="selected" data-l10n-id="pagesizeauto">Automatic Size</option>
                <option id="SizeActualOption" title="" value="page-size-actual" data-l10n-id="pagesizeactual">Actual Size</option>
                <option title="" value="0.1">10</option>
                <option title="" value="0.5">50</option>
                <option title="" value="1">100</option>                         
            </select>
        </span>
Run Code Online (Sandbox Code Playgroud)

当我单击每个选项时,位于页面其他位置的另一个元素内的值将更改(请参见下文)-选中后,除下拉选项(默认选项)外,没有任何“选择”属性应用于任何下拉选项无法基于“选定”属性断言选择。

我要做的事情(我尚未在示例中进行编码)是,当选择了特定的选择选项时,另一个页面元素(如下所示)将更新以容纳新的宽度和高度值:

<div id="Container" class="page" style="width: 547px; height: 865px; data-loaded="true">
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止提出的-请注意,我还没有断言

        IWebElement AutoSize = UtilityClass.driver.FindElement(By.Id("SizeAutoOption"));
        IWebElement ActualSize = UtilityClass.driver.FindElement(By.Id("SizeActualOption"));

        IWebElement Ten = UtilityClass.driver.FindElement(By.XPath("//*[@id='SizeSelect']/option[3]"));
        IWebElement Fifty = UtilityClass.driver.FindElement(By.XPath("//*[@id='SizeSelect']/option[4]"));
        IWebElement Hundred = UtilityClass.driver.FindElement(By.XPath("//*[@id='SizeSelect']/option[5]"));  

        Object[] SelectElements = new Object[] { AutoSize, ActualSize, Ten, …
Run Code Online (Sandbox Code Playgroud)

c# selenium webdriver selenium-webdriver

1
推荐指数
1
解决办法
5440
查看次数

量角器if(checkbox.isSelected())bug?

给出以下代码:

if (element(by.name("checkbox")).isSelected()) {
    element(by.name("checkbox")).click();
}
Run Code Online (Sandbox Code Playgroud)

它总是点击复选框,无论它是否先前被选中,它就像它返回什么并不重要.我也试过了

if (element(by.name("checkbox")).isSelected() == true) {
    element(by.name("checkbox")).click();
}
Run Code Online (Sandbox Code Playgroud)

相同的结果.

但是,当我把代码放在预期中时,它就像一个魅力... ex:

expect(element(by.name("checkbox")).isSelected().toBe(true));
Run Code Online (Sandbox Code Playgroud)

如果选择了,则给出正确的答案.

这是Protractor的错误还是我在这里做错了什么?

PS:我试图在selenium webdriver junit中运行类似的代码,它的工作原理.

javascript checkbox selenium webdriver protractor

1
推荐指数
1
解决办法
5715
查看次数

findElement(By)和findElementBy()有什么区别?

WebElement p1 = (new FirefoxDriver()).findElement(By.xpath("//div[@class = 'site-title']")) ;

WebElement p2 = (new FirefoxDriver()).findElementByXPath("//div[@class = 'site-title']") ;
Run Code Online (Sandbox Code Playgroud)

我做同样的事情:我选择xpath元素,但在第一行,我使用findElement(By.xpath)和第二,我使用整个表达式findElementByXpath.

我仍然使用相同的firefox驱动程序对象!

这是因为By.界面和访问方式不同?

java selenium webdriver selenium-webdriver

1
推荐指数
1
解决办法
1060
查看次数

如何使用Selenium Webdriver Java查找表行号

我有一个包含多行和多列的表.

HTML代码如下所示:

<!-- language: lang-html -->
    <div id="ScheduleTable-01" class="widget Scheduletable suppress-errors Schedule-grid" data-widget="ScheduleTable">
    <div class="grid-wrapper">
    <table class="nostyles weekmode hourstype fullmonth" style="width: 100%;">
    <thead>
    <tbody>
    <tr id="20631697" class="Schedule-row row0 20631697 key_AuthoriserId-1077_JobId-402704200_TaskId-CON_TsCode-35" data-row-index="0" data-job="402121200,Job XXX">
    <tr id="-499545938" class="Schedule-row row1 -499545938 key_AuthoriserId-1077_JobId-A01200131S_TaskId-CON_TsCode-35" data-row-index="1" data-job="A01763431 Job YYY">
    <tr id="-985929934" class="Schedule-row row2 -985929934 key_AuthoriserId-1277_JobId-I02010171S_TaskId-INT_TsCode-30" data-row-index="2" data-job="I02872371 S,Job ZZZ">
Run Code Online (Sandbox Code Playgroud)

因为它是一个动态网页,所以每次加载页面时,Job YYY都会被放置在不同的行索引中.因此,我想知道Job YYY所在表的哪一行.我可以看到每一行都标有data-row-index,这就是我想要的.

我正在考虑这个Selenium代码

<!-- language: lang-java -->
WebElement mainTable = driver.findElement(By.id("ScheduleTable-01"));
//I am not sure about this part below; findElements …
Run Code Online (Sandbox Code Playgroud)

html java selenium webdriver

1
推荐指数
1
解决办法
9178
查看次数