我如何检查页面中是否存在文本?

我使用seleniumwebdriver,我怎样才能检查一些文本是否存在或不在页面中? 也许有人推荐我有用的资源,我可以阅读有关它。 谢谢

  • 需要通过CSS在selenium中查找元素
  • Selenium:FirefoxProfileexception无法加载configuration文件
  • Selenium WebDriver如何解决陈旧的元素引用exception?
  • webdriver.get()和webdriver.navigate()之间的区别
  • 我怎样才能得到webdriver中的元素的当前内容
  • 在使用Java的Selenium WebDrivertesting中waitForVisible / waitForElementPresent的等效性?
  • Selenium可以与现有的浏览器会话进行交互吗?
  • Selenium 2中testing截图的最佳方法是什么?
  • 8 Solutions collect form web for “我如何检查页面中是否存在文本?”

    使用XPath ,并不难。 只需search包含给定文本的所有元素:

    List<WebElement> list = driver.findElements(By.xpath("//*[contains(text(),'" + text + "')]")); Assert.assertTrue("Text not found!", list.size() > 0); 

    官方文件对于这样的任务并不是非常支持,但它仍然是最基本的工具。

    JavaDocs更大,但是需要一些时间来处理一切有用和无用的事情。

    要学习XPath,只需按照互联网 。 规范也是一个惊人的好读。


    编辑:

    或者,如果你不想让你的隐式等待上面的代码等待文本出现,你可以这样做:

     String bodyText = driver.findElement(By.tagName("body")).getText(); Assert.assertTrue("Text not found!", bodyText.contains(text)); 

    这将帮助您检查网页中是否有必要的文字。

     driver.getPageSource().contains("Text which you looking for"); 

    你可以像这样获取整个页面的正文:

     bodyText = self.driver.find_element_by_tag_name('body').text 

    然后使用一个断言来检查它是这样的:

     self.assertTrue("the text you want to check for" in bodyText) 

    当然,你可以是具体的,并检索一个特定的DOM元素的文本,然后检查,而不是检索整个页面。

    Selenium 2 webdriver中没有verifyTextPresent,所以你必须检查页面源代码中的文本。 看下面的一些实际例子。

    python

    在Python驱动程序中,您可以编写以下函数:

     def is_text_present(self, text): return str(text) in self.driver.page_source 

    然后用它作为:

     try: self.is_text_present("Some text.") except AssertionError as e: self.verificationErrors.append(str(e)) 

    要使用正则expression式,请尝试:

     def is_regex_text_present(self, text = "(?i)Example|Lorem|ipsum"): self.assertRegex(self.driver.page_source, text) return True 

    完整的例子请参阅: FooTest.py文件 。

    或者下面检查几个其他的select:

     self.assertRegexpMatches(self.driver.find_element_by_xpath("html/body/div[1]/div[2]/div/div[1]/label").text, r"^[\s\S]*Weather[\s\S]*$") assert "Weather" in self.driver.find_element_by_css_selector("div.classname1.classname2>div.clearfix>label").text 

    来源: 另一种检查(断言)是否使用Selenium Python存在文本的方法

    Java的

    在Java中有以下function:

     public void verifyTextPresent(String value) { driver.PageSource.Contains(value); ; } 

    用法是:

     try { Assert.IsTrue(verifyTextPresent("Selenium Wiki")); Console.WriteLine("Selenium Wiki test is present on the home page"); } catch (Exception) { Console.WriteLine("Selenium Wiki test is not present on the home page"); } 

    来源: 在Selenium 2 Webdriver中使用verifyTextPresent


    贝哈特

    对于Behat,你可以使用Mink扩展 。 它具有在MinkContext.php定义的以下方法:

     /** * Checks, that page doesn't contain text matching specified pattern * Example: Then I should see text matching "Bruce Wayne, the vigilante" * Example: And I should not see "Bruce Wayne, the vigilante" * * @Then /^(?:|I )should not see text matching (?P<pattern>"(?:[^"]|\\")*")$/ */ public function assertPageNotMatchesText($pattern) { $this->assertSession()->pageTextNotMatches($this->fixStepArgument($pattern)); } /** * Checks, that HTML response contains specified string * Example: Then the response should contain "Batman is the hero Gotham deserves." * Example: And the response should contain "Batman is the hero Gotham deserves." * * @Then /^the response should contain "(?P<text>(?:[^"]|\\")*)"$/ */ public function assertResponseContains($text) { $this->assertSession()->responseContains($this->fixStepArgument($text)); } 

    在Python中,你可以简单地检查如下:

     # on your `setUp` definition. from selenium import webdriver self.selenium = webdriver.Firefox() self.assertTrue('your text' in self.selenium.page_source) 

    你可以检查你的页面源文本如下:

     Assert.IsTrue(driver.PageSource.Contains("Your Text Here")) 

    在c#中,这个代码将帮助你检查网页中是否有必要的文本。

     Assert.IsTrue(driver.PageSource.Contains("Type your text here")); 
      boolean Error = driver.getPageSource().contains("Your username or password was incorrect."); if (Error == true) { System.out.print("Login unsuccessful"); } else { System.out.print("Login successful"); }