我们如何在Selenium Webdriver中找到Dropdown的选定选项?
我试过了 -
WebElement element = driver.findElement(By.xpath(locator1));
Select select = new Select(element);
List<WebElement> SO = select.getAllSelectedOptions();
String S = SO.toString();
System.out.println(S);
Run Code Online (Sandbox Code Playgroud)
返回WebElements,如 -
[[[[[FirefoxDriver: firefox on XP (c388e8a8-09d5-41b9-b086-0278c639d8b1)] -> xpath: .//*[@id='city']]] -> tag name: option]]
Run Code Online (Sandbox Code Playgroud)
我想找到被选中的选项?
当测试在watir中失败时,我无法弄清楚如何捕获屏幕截图.请帮忙/举例?
这是我的代码的例子
testName = "Entered 000000 - Invalid Unit Number"
browser.text_field(:name => 'unitNumber').set '000000'
browser.button(:name => "OpRetrieve").click
message=browser.text_field(:id => 'messages').text
if message == "Invalid Unit Number"
f1.puts "PASSED #" + testId.to_s + ": " + testName
else
f1.puts "FAILED #" + testId.to_s + ": " + testName + ". Message: " + message
"Capturd screenshot"
end
testId=testId+1
Run Code Online (Sandbox Code Playgroud) 我想访问一个DOM元素,它位于层次结构之上,是我有权访问的元素.
在Attached ScreenShot中,我想访问#nRD_1的Grand Grand Grand Parent的#pRow_22.但我只能访问#ntsDiv_1.请建议我在这种情况下做什么

HTML代码是这样的: -
<tr id="pRow_22" style="border-bottom: 0;">
<td class="nameCell" style="border-bottom: 1px solid #CCCCCC;">
<div id="seller_22" class="product-sellercell">
<a id="pLogoLink_22" target="_blank" href="/norob/ClickTracker.somethins..." onclick="setMerchLb('eComElectronics.com')" rel="nofollow">
<div>
<a id="ntsLink_1" rel="nofollow" onclick="return false;" href="#">
</div>
<div id="ntsDiv_1" class="mlt-pop-container" style="width: 250px; text-align: left; white-space: normal; top: 2340px; left: 131px; visibility: hidden;">
<div class="mlt-pop-bg">
</div>
.
.
</div>
</td>
Run Code Online (Sandbox Code Playgroud)
我在另一个论坛中发现,在watir webdriver中已经弃用了contains_text方法.如果我能找到准确显示webdriver支持的方法的文档,我将会很高兴.你可能会认为http://watirwebdriver.com/会有这个.但是,嗯,没有.
我正在Thomson Holidays网站(http://www.thomson.co.uk/holidays.html)上进行示例作业.在左侧有一个假日搜索面板.我无法识别WebDriver中的任何这些元素.但是,在IDE中,这些元素是可识别的.需要更多信息,因为这是我第一次遇到这样的问题.以下是代码示例:
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("http://www.thomson.co.uk/holidays.html");
driver.findElement(By.id("searchbutton")).click();
driver.findElement(By.id("holidayAttribute_1")).click();
driver.findElement(By.id("holidayAttribute_2")).click();
driver.findElement(By.id("holidayAttribute_3")).click();
Thread.sleep(5000);
Run Code Online (Sandbox Code Playgroud) 我致力于自动化网站,我正试图找到一种方法来减少代码中xpath的使用.我的代码看起来像这样
driver.findElement(By.xpath("//html/body/center/div/div/center/table/tbody/tr/td/form/table/tbody/tr[3]/td/input")).click();
driver.findElement(By.xpath("//html/body/div/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td")).getText();
driver.findElement(By.xpath("//html/body/div/table/tbody/tr/td/div[2]/div/div/div[4]/div/div/div")).click();
driver.findElement(By.xpath("//html/body/div[3]/div/div/div/div[2]/div/span/ul[2]/li[6]/a")).click();
/*driver.findElement(By.xpath("//html/body/div/div/div/div[3]/div/div[2]/div[2]/table/tbody/tr/td[3]/table/tbody/tr/td[2]/em/button")).click();
WebElement editUserForm = driver.findElement(By.cssSelector("iframe[src*='editUserForm']"));
Run Code Online (Sandbox Code Playgroud)
有什么办法可以减少这些xpath,这样我的代码看起来不会破旧吗?这里的一位成员建议我"请不要使用绝对xpath".这是什么意思 ?请帮忙.如果有任何链接可以帮助我,请告诉我.
是否可以创建一个将字符串转换为xpath指针的文件,然后我们可以在代码中使用该字符串?
嗨我有我当前框架的设置,
ClassA
{
//Which Receives Selenium WebDriver call the 'driver' object reference to manipulate the locators in UI
public WebDriver get()
{
return MainClass.driver;
}
}
MainClass
{
public static Webdriver driver;
method A()
{
//which uses Firefox instance and it is passed to ClassA to operate
driver = new FirefoxDriver();
}
methodB()
{
//which creates new instance of Chrome
driver = new ChromeDriver();
}
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是,一旦我调用methodB()创建了Chrome的实例,但是一旦完成,我想恢复到在chrome运行之前可用或调用的firefox实例,但是我的方法是因为我指的是相同的webdriver对象旧的firefox引用被删除.
有什么建议 ?
PS:请原谅我遵循的错误代码约定
我的页面有一个包含11列的表,给出了第2列的文本值,我想点击同一行的第11列(箭头按钮).
我的DOM看起来像这样:
<table id=”atab” width=”100%” class=”at-class”>`
<thead>…</thead>
<tbody>
<tr>...</tr>
<tr>
<td>…</td>
<td>
<a href=”/abc/def/ghi/prop?id=1”>grp1</a>
</td>
<td>…</td>
<td>…</td>
<td>200</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>
<ul class=”dropwd”
<li class>
<input class=”a-act a-menu-button” type=”button” value=”^”
<ul class=”sub_menu” style=”vis””>…</ul>
</li>
</ul>
</td>
<tr>
<tbody>
Run Code Online (Sandbox Code Playgroud)
这个工作(因为我刚刚从inspect元素中获取了xpath).我不能用它.
myxpath = "//*[@id='atab']/tbody/tr[2]/td[11]/ul/li/input”
myxpath.click()
Run Code Online (Sandbox Code Playgroud)
我需要使用contains,然后抓住兄弟(第11个位置,从我拥有的第9个位置).我为myxpath尝试了以下内容,但它无法找到该元素.我在其他地方使用过相同的格式,很好.唯一的区别是这次,我没有得到相邻的兄弟,而是第x个兄弟姐妹.
哪里 campg = grp1
//table[@class='at-class']//td[contains(text(),' " + campg + " ')]/following-sibling::td[9]/ul/li/input
//* [@id='atab']//td[contains(text(),' " + campg + " ')]/following-sibling::td[9]/ul/li/input
//* [@id='campaigns']//td[contains(text(),' " + campg + " ')]/following-sibling::td[9]/ul/li/input[@type=’button’]
Run Code Online (Sandbox Code Playgroud)
我也尝试了其他组合.
在运行测试用例时,我有一个try/catch机制和一个侦听器,如果发生错误/故障,它会生成一个屏幕截图.我是否还可以撰写并通过电子邮件发送并附上该屏幕截图并将其发送给某人?
我正在使用Selenium webdriver(Java).
我需要测试注册表单,但在提交之前,图像框(验证码)正在出现,但每次执行时它都会被更改.我想知道如何从图像中获取数据(验证码).
有人可以帮帮我吗?