相关疑难解决方法(0)

如何在Selenium Webdriver(Python)中找到包含特定文本的元素?

我正在尝试使用Selenium测试复杂的javascript界面​​(使用Python界面,以及跨多个浏览器).我有许多形式的按钮:

<div>My Button</div>
Run Code Online (Sandbox Code Playgroud)

我希望能够根据"我的按钮"搜索按钮(或者不区分大小写的部分匹配,例如"我的按钮"或"按钮")

我发现这非常困难,在某种程度上我觉得我错过了一些明显的东西.我到目前为止最好的事情是:

driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]')
Run Code Online (Sandbox Code Playgroud)

但是,这是区分大小写的.我尝试过的另一件事是遍历页面上的所有div,并检查element.text属性.但是,每次你得到表格的情况:

<div class="outer"><div class="inner">My Button</div></div>
Run Code Online (Sandbox Code Playgroud)

div.outer还有"My Button"作为文本.为了解决这个问题,我试图查看div.outer是否是div.inner的父节点,但是无法弄清楚如何做到这一点(element.get_element_by_xpath('..')返回一个元素的父节点,但它测试不等于div.outer).此外,迭代浏览页面上的所有元素似乎非常慢,至少使用Chrome webdriver.

想法?

编辑:这个问题有点模糊.在这里询问(并回答)一个更具体的版本:如何在不包含子元素文本的情况下获取Selenium WebDriver中的元素文本(通过Python api)?

python selenium selenium-webdriver

229
推荐指数
7
解决办法
46万
查看次数

我们可以在BeautifulSoup中使用xpath吗?

我正在使用BeautifulSoup来抓取一个网址,我有以下代码

import urllib
import urllib2
from BeautifulSoup import BeautifulSoup

url =  "http://www.example.com/servlet/av/ResultTemplate=AVResult.html"
req = urllib2.Request(url)
response = urllib2.urlopen(req)
the_page = response.read()
soup = BeautifulSoup(the_page)
soup.findAll('td',attrs={'class':'empformbody'})
Run Code Online (Sandbox Code Playgroud)

现在在上面的代码中我们可以findAll用来获取与它们相关的标签和信息,但我想使用xpath.是否可以将xpath与BeautifulSoup一起使用?如果可能的话,有人可以给我一个示例代码,以便更有帮助吗?

python xpath urllib beautifulsoup

93
推荐指数
5
解决办法
11万
查看次数

Python以及如何从Selenium元素WebElement对象中获取文本?

我试图通过使用Selenium方法获取html页面中的标记文本内容,但似乎someElement.getText()Python中没有方法.有什么帮助吗?

这是追溯:

AttributeError: 'WebElement' object has no attribute 'getText'
Run Code Online (Sandbox Code Playgroud)

python selenium selenium-webdriver

16
推荐指数
2
解决办法
6万
查看次数

如何从父元素中获取文本并从子元素中排除文本(C#Selenium)

是否有可能只从父元素获取文本而不是Selenium中的子元素?

示例:假设我有以下代码:

<div class="linksSection>
  <a href="https://www.google.com/" id="google">Google Link
    <span class="helpText">This link will take you to Google's home page.</span>
  </a>
  ...
</div>
Run Code Online (Sandbox Code Playgroud)

在C#(或任何语言)中,我将:

string linktext = driver.FindElement(By.CssSelector(".linksSection > a#google")).Text;
Assert.AreEqual(linkText, "Google Link", "Google Link fails text test.");
Run Code Online (Sandbox Code Playgroud)

但是,linktext将具有"谷歌链接此链接将带您到谷歌的主页."

没有做一堆字符串操作(比如获取所有子节点的文本并从父节点的结果文本中减去它),有没有办法从父元素中获取文本?

c# selenium selenium-webdriver

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

Python和Selenium - 获取排除子节点文本的文本

使用Python 3.

假设:

<whatever>
  text
  <subchild>
    other
  </subchild>
</whatever>
Run Code Online (Sandbox Code Playgroud)

如果我这样做:

elem = driver.find_element_by_xpath("//whatever")

elem.text包含"text other"

如果我这样做:

elem = driver.find_element_by_xpath("//whatever/text()[normalize-space()]")

elem不是Webelement.

我如何继续只抓"文本"(而不是"其他")?

Id est:仅抓取直接节点中的文本,而不抓取子节点.

更新:

原始HTML是:

<div class="border-ashes the-code text-center">
VIVEGRPN
  <span class="cursor"></span>
  <button class="btn btn-ashes zclip" data-clipboard-target=".the-code" data-coupon-code="VklWRUdSUE4=">
  <span class="r">Hen, la.</span>
</div>
Run Code Online (Sandbox Code Playgroud)

python selenium python-3.x selenium-webdriver

7
推荐指数
3
解决办法
1937
查看次数

什么是硒,什么是WebDriver?

什么是硒?

当您打开Selenium的官方页面时,您首先读到的是“什么是Selenium?”中的“ Selenium automates browser”。部分。“硒的哪个部分适合我?”部分 下面提供了Selenium WebDriver和Selenium IDE之间的选择。据此,我推断出Selenium是工具的集合,该集合包括IDE,WebDriver API(语言绑定),Grid,Selenium Standalone Server,浏览器驱动程序。必须下载适当的文件才能构建项目。

什么是WebDriver?

WebDriver是一个API。它用多种语言编写,这些语言称为语言绑定。API具有控制浏览器的功能。您可以使用这些功能编写脚本来以所需的方式(测试用例)控制浏览器。

这就是我所知道的。如果我错了,请纠正我。我想从面试的角度知道这两个问题的答案。

selenium webdriver selenium-webdriver

4
推荐指数
2
解决办法
602
查看次数