GVKun编程网logo

如何在selenium-webdriver中获得窗口标题,ID和名称?(selenium获取页面标题)

7

关于如何在selenium-webdriver中获得窗口标题,ID和名称?和selenium获取页面标题的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于html–如何在SeleniumWe

关于如何在selenium-webdriver中获得窗口标题,ID和名称?selenium获取页面标题的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于html – 如何在Selenium WebDriver中获取单个文本节点、selenium – 如何在webdriver中获取div中的属性值、selenium-webdriver – 如何使用webdriver中的css选择器按值定位元素?、selenium-webdriver – 如何在Appium中测试Android Toast消息(selenium Java)等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

如何在selenium-webdriver中获得窗口标题,ID和名称?(selenium获取页面标题)

如何在selenium-webdriver中获得窗口标题,ID和名称?(selenium获取页面标题)

我正在尝试从 selenium-webdriver (ruby)实现以下方法

  • get_all_window_ids
  • get_all_window_titles
  • get_all_window_names

  • 我运行Selenium IDE并将脚本导出到Ruby Test :: Unit。将其另存为.rb

  • 打开我的脚本以使用Aptana Studio 3进行编辑
  • 初始代码段如下:
    require "rubygems"    require "selenium-webdriver"    require "test/unit"    class SwitchToPopup3 < Test::Unit::TestCase      def setup        @driver = Selenium::WebDriver.for :firefox        @base_url = (URL of my test website)        @driver.manage.timeouts.implicit_wait = 30        @verification_errors = []      end      def teardown        @driver.quit        assert_equal [], @verification_errors      end    def test_switch_to_popup3      .      .      puts @driver.get_all_window_ids()      puts @driver.get_all_window_titles()      puts @driver.get_all_window_names()      .      .    end

我不断得到的错误是

    NoMethodError: undefined method `get_all_window_ids'' for #    <Selenium::WebDriver::Driver:0x101e4b040 browser=:chrome>    /Users/rsucgang/Documents/Aptana Studio 3 Workspace/Testing/SwitchToPopup2.rb:37:in `test_switch_to_popup3''

我研究了selenium-webdriver的红宝石绑定文档

http://selenium.googlecode.com/svn/trunk/docs/api/rb/Selenium/Client/GeneratedDriver.html#get_all_window_titles-
instance_method

最终,我的目标是运行自动化脚本:

  1. 单击链接以打开一个新窗口,其中有target = _blank且没有可用的windowID(不实现JS)
  2. 识别浏览器中所有打开的窗口的名称
  3. 使用switchToWindow(name)方法切换到新的弹出窗口
  4. 继续在该弹出窗口上运行我的脚本

我已经在互联网上进行了搜索和研究,但没有得到太多信息。

谢谢,如果您需要更多信息,请告诉我。

  • OSL Mac OSX 10.7.3
  • Ruby:uby1.8.7(2010-01-10补丁程序级别249)[universal-darwin11.0]
  • Firefox:Firefox 9.0.1(Mac)
  • Chrome:Chrome 17.0.963.79(苹果机)
  • Selenium-Server:Ruby gem 2.20.0

答案1

小编典典

问题是,get_all_window_ids它用于Selenium :: Client而不是Selenium ::
Webdriver。我相信Selenium :: Client是旧版本的Selenium,并且API与Selenium ::
Webdriver不同(请参见此处)。由于您使用的是Selenium
:: Webdriver,因此可以解释为什么出现“未定义的方法”错误。

对于Selenium :: Webdriver,我知道如何在Windows之间切换的唯一方法是使用:

@driver.switch_to.window("<window_handle>")

您可以通过以下方式获取所有已知的window_handles:

@driver.window_handles#=> Returns all window handles as an array of strings

如果要切换到刚打开的弹出窗口,可以执行以下操作。请注意,这.window_handles是按照打开窗口的顺序进行的,我认为这是事实:

@driver.switch_to.window @driver.window_handles.last

总而言之,假设您只关心访问弹出窗口(而不关心按名称访问),则可以执行以下操作:

#Click control that opens popup@driver.find_element(:id, ''button that opens popup'').click#Switch to popup@driver.switch_to.window @driver.window_handles.last#Do actions in new popup@driver.find_element(:id, ''id of element in popup'').click

请注意,如果使用弹出窗口后,您将要返回到原始窗口,那么建议您执行以下操作。通过将一个块传递给switch_to.window,该块将在弹出窗口中执行,并且当该块结束时@driver将自动指向原始窗口。

#Click control that opens popup@driver.find_element(:id, ''button that opens popup'').click#Switch to popup@driver.switch_to.window( @driver.window_handles.last ){  #Do actions in new popup  @driver.find_element(:id, ''id of element in popup'').click}#Continue with original window@driver.find_element(:id, ''button in original window'').click

html – 如何在Selenium WebDriver中获取单个文本节点

html – 如何在Selenium WebDriver中获取单个文本节点

参见英文答案 > Getting text from a node2个
我想从标签中获取文本但没有嵌套标签的文本.即在下面的示例中,我只想从< small>中获取字符串183591.从< span>标记并排除文本服务请求ID:标签.这不是微不足道的,因为< span> tag嵌套在< small>中标签.这可能与WebDriver和XPath一起使用吗?

标签中的文字每次都会改变.

<div id="claimInfoBox">
<div>
<div>
<h4https://www.jb51.cc/tag/ott/" target="_blank">ottom">
<p>
<small>
<span>Service Request ID:</span>
183591
</small>
</p>
<divhttps://www.jb51.cc/tag/ott/" target="_blank">ottom"></div>
<div id="CIB_PersonalInfo_displayMode">
<div id="CIB_PersonalInfo_EditMode"https://www.jb51.cc/tag/dis/" target="_blank">display: none">
</div>
</div>
<script type="text/javascript">
</div>
</div>

解决方法

您将不得不使用字符串操作.就像是:
// you will need to adjust these XPaths to suit your needs
String outside = driver.findElement(By.xpath("//small")).getText();
String inside = driver.findElement(By.xpath("//span")).getText();

String edge = outside.replace(inside,"");

selenium – 如何在webdriver中获取div中的属性值

selenium – 如何在webdriver中获取div中的属性值

在以下 HTML中,我需要使用Selenium Webdriver获取登录值.
<div 
   roletitle="MD" 
   careteamrole="HOSPITALIST" 
   login="adamss" 
   isconsultctm="" 
   title="Adams Samuel"id="97">
</div>

我尝试了以下,但它失败了: –

WebElement getAssigneeLoginWebElement = ieDriver.findElement(By.cssSelector(".assign_grid assign_grid_selected"));

sAssignedCTMLoginId = getAssigneeLoginWebElement.getAttribute("login");
sAssignedCTMLoginId = ieDriver.findElement(By.className("assign_grid assign_grid_selected")).getAttribute("login");
sAssignedCTMLoginId = ieDriver.findElement(By.xpath("//*[@]/@login[1]")).getText();

先感谢您

解决方法

ieDriver.findElement(By.xpath("//div[@]")).getAttribute("login");

我还要检查以确保您使用的定位器只返回一个元素,而不是更多 – 要检查这一点,使用.findElements运行相同的操作并验证只返回一个结果.

通常,HTML中有隐藏元素,您的定位器可能正在拾取它们.

selenium-webdriver – 如何使用webdriver中的css选择器按值定位元素?

selenium-webdriver – 如何使用webdriver中的css选择器按值定位元素?

对于以下元素,如何使用css选择器通过td的值找到它?在这种情况下,它是“独特的文本”

<tdcolspan="3">
   unique text
</td>

解决方法

你可以使用这样的东西,

使用CSS Selector,

By.cssSelector("td[][value='unique text']");

有关使用css选择器的更多信息,请参见See here

selenium-webdriver – 如何在Appium中测试Android Toast消息(selenium Java)

selenium-webdriver – 如何在Appium中测试Android Toast消息(selenium Java)

我正在使用Selenium和 Java在 Android上运行脚本(通过Appium服务器).
我看到用selenium来定位吐司是不可能的

driver.findElement(By.LinkText("User not logged in")

在Appium

但可以在Selendroid中用于捕获Toast消息.

我有一种方法可以在同一个脚本中同时使用Selendroid和Appium吗?

解决方法

方法1:从Appium版本1.6.4支持toast消息,因为你需要使用automationName:’uiautomator2′.

toast = driver.find_element(:xpath,"//android.widget.Toast[1]")
if toast.text == "Hello"

但我不推荐这个,因为uiautomator2还不稳定.

方法2:

>在屏幕上触发文字信息
>捕获截图
>将图像转换为文本文件

def assettoast(string)
  sname = (0...8).map { (65 + rand(26)).chr }.join
  $driver.driver.save_screenshot("#{sname}")

  # Make sure tesseract is installed in the system. If not you can install using "brew install tesseract" in mac
  system ("tesseract #{sname} #{sname}")

  text_file="#{sname}.txt"
  var= get_string_from_file(string,text_file)
  raise if var != true
end

>检查文本文件中是否有吐司信息

def get_string_from_file(word,filename)
  File.readlines(filename).each do |line|
  return true if line.include?(word)
  end
end

今天关于如何在selenium-webdriver中获得窗口标题,ID和名称?selenium获取页面标题的介绍到此结束,谢谢您的阅读,有关html – 如何在Selenium WebDriver中获取单个文本节点、selenium – 如何在webdriver中获取div中的属性值、selenium-webdriver – 如何使用webdriver中的css选择器按值定位元素?、selenium-webdriver – 如何在Appium中测试Android Toast消息(selenium Java)等更多相关知识的信息可以在本站进行查询。

本文标签: