为什么Selenium会在Google主页上标识一个按钮而不是两个按钮

问题描述 投票:0回答:2

计划目标: - 计划是使用tagName锚点搜索Google搜索页面上的按钮数量

问题: - 此程序返回结果1而不是2,因为谷歌搜索页面上有两个按钮可用

测试数据 :-

  1. JAVA: - java版“1.8.0_121”Java(TM)SE运行环境(版本1.8.0_121-b13)Java HotSpot(TM)64位服务器VM(版本25.121-b13,混合模式) 2 Selenium可执行JAR文件:-selenium-server-standalone-3.3.1
  2. FF浏览器: - 52.0.1(64位)
  3. Eclipse: - 适用于Java开发人员的Eclipse IDE版本:Neon.2发行版(4.6.2)内部版本号:20161208-0600
  4. GeckoDriver:-geckodriver-v0.15.0-win64
  5. 代码试用: package com.packt.webdriver.chapter1; import java.util.List; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; public class GoogleSearchPageByTagName { public static void main(String[] args) { WebDriver driver; System.setProperty("webdriver.gecko.driver","C:\\Users\\PragatiChaturvedi\\Desktop\\Selenium Web Driver\\geckodriver.exe"); driver =new FirefoxDriver(); driver.get("http://www.google.com"); List<WebElement> buttons =driver.findElements(By.tagName("button")); System.out.println(buttons.size()); } }

控制台输出: -

1490117595600   geckodriver INFO    Listening on 127.0.0.1:38505
1490117596915   mozprofile::profile INFO    Using profile path C:\Users\PRAGAT~1\AppData\Local\Temp\rust_mozprofile.UbkCPgo5hof6
1490117596926   geckodriver::marionette INFO    Starting browser C:\Program Files (x86)\Mozilla Firefox\firefox.exe with args []
1490117596999   geckodriver::marionette INFO    Connecting to Marionette on localhost:51031
Mar 21, 2017 1:33:55 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
1
java selenium firefox geckodriver selenium-firefoxdriver
2个回答
1
投票

这个问题非常棘手。毋庸置疑,当我们访问Google的网址时,我们会被重定向到我们各自的Google镜像网站。例如google.com,Google.co.in,现在启用了本地化的Google webservice,这些镜像站点中的按钮数量可能会有所不同。

有很多令我困惑的按钮的事实是因为按钮被隐藏起来。我们通常将它们称为隐藏元素。其中一些按钮仅在典型情况下被激活,而大多数按钮对最终用户来说根本不可见,但是它们仍然存在。虽然隐藏这些按钮的原因是一个单独的讨论线程,但它们是实现不同业务逻辑所必需的。

现在更有趣的是,按钮必然不能以按钮标签开头。所以就像这种情况一样,如果你想通过标签“tagName”来计算按钮的数量,你很可能会得到不正确的结果。某些按钮可能会在输入标签或其他标签中定义。因此,为了找到特定网页上的按钮数量,必须按照网页上存在的所有按钮的模式构建xpath。

现在回答这个问题。从问题OP实际上想要断言的内容并不清楚。但是,可见按钮的数量肯定会与开发环境中定义的按钮数量不同。


0
投票

您正在寻找标签名称为“button”的元素。

您正在查看的页面中只有一个。 (甚至没有显示)

你想要寻找属性类型=“提交”的标签输入。

尝试

driver.find_element_by_xpath("//input[@type='submit']");
© www.soinside.com 2019 - 2024. All rights reserved.