GVKun编程网logo

如何使用JavaScript单击Selenium WebDriver中的元素(selenium用js点击元素)

4

本文的目的是介绍如何使用JavaScript单击SeleniumWebDriver中的元素的详细情况,特别关注selenium用js点击元素的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,

本文的目的是介绍如何使用JavaScript单击Selenium WebDriver中的元素的详细情况,特别关注selenium用js点击元素的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解如何使用JavaScript单击Selenium WebDriver中的元素的机会,同时也不会遗漏关于java – 如何点击Selenium WebDriver中的隐藏元素?、Java 如何强制Selenium WebDriver单击当前不可见的元素?、javascript – Selenium WebDriver点击隐藏元素、javascript – 如何使用Selenium WebDriver访问动态添加的iframe?的知识。

本文目录一览:

如何使用JavaScript单击Selenium WebDriver中的元素(selenium用js点击元素)

如何使用JavaScript单击Selenium WebDriver中的元素(selenium用js点击元素)

我有以下HTML:

<button name="btnG"aria-label="Google Search" id="gbqfb"><span></span></button>

我下面的单击“ Google搜索”按钮的代码在WebDriver中使用Java时效果很好。

driver.findElement(By.id("gbqfb")).click();

我想将JavaScript与WebDriver一起使用以单击按钮。我该怎么做?

答案1

小编典典

通过JavaScript执行点击具有一些您应该注意的行为。例如,如果绑定到onclick元素事件的代码调用window.alert(),则可能会发现Selenium代码挂起,具体取决于浏览器驱动程序的实现。也就是说,您可以使用JavascriptExecutor该类来执行此操作。我的解决方案与其他建议的解决方案不同,但是,您仍然可以使用WebDriver方法来定位元素。

// Assume driver is a valid WebDriver instance that// has been properly instantiated elsewhere.WebElement element = driver.findElement(By.id("gbqfd"));JavascriptExecutor executor = (JavascriptExecutor)driver;executor.executeScript("arguments[0].click();", element);

您还应该注意,使用接口的click()方法可能会更好WebElement,但是在实例化驱动程序之前禁用本机事件。这将实现相同的目标(具有相同的潜在限制),但不会迫使您编写和维护自己的JavaScript。

java – 如何点击Selenium WebDriver中的隐藏元素?

java – 如何点击Selenium WebDriver中的隐藏元素?

我有一个网格显示一些记录.当我点击一个记录并检查该元素时,显示它被隐藏,但它在网格中可见.

我的HTML是:

<a href="http://192.168.1.6/eprint_prod_3.8/settings/othercost_add.aspx?type=edit&id=805" title="Plastic Spiral Bind"
<div> Plastic Spiral Bind </div>
</a>

上述代码在检查时隐藏,但在网格中可见.

硒代码:

driver.findElement(By.partialLinkText("Plastic Spiral Bind")).click();

解决方法

首先将元素存储在对象中,让我们说元素,然后写下面的代码来点击那个隐藏的元素:
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();",element);

Java 如何强制Selenium WebDriver单击当前不可见的元素?

Java 如何强制Selenium WebDriver单击当前不可见的元素?

我在FirefoxDriver中使用Selenium 2 Java API。当我填写表单时,根据表单输入,将复选框添加到页面。

我想使用Selenium模拟对这些复选框的单击。该元素在常规浏览器中可见且可用,但是selenium断言该元素不可见。

"Element is not currently visible and so may not be interacted with"

我可以强迫selenium忽略元素的不可见状态吗?如何强制Selenium与不可见元素进行交互?

答案1

小编典典

Selenium根据以下条件确定元素是否可见(使用DOM检查器确定哪些CSS适用于你的元素,请确保你查看计算的样式):

  • visibility != hidden
  • display != none (is also checked against every parent element)
  • opacity != 0 (this is not checked for clicking an element)
  • height and width are both > 0
  • for an input, the attribute type != hidden

你的元素符合这些条件之一。如果你没有能力更改元素的样式,请按照以下方法用javascript强制执行此操作(由于你使用了Selenium2 API,因此假设使用WebDriver):

((JavascriptExecutor)driver).executeScript("arguments[0].checked = true;", inputElement);

但这不会触发javascript事件,如果你依赖于该输入的change事件,那么你也必须触发它(有多种方法,最容易使用该页面上加载的任何javascript库)。

javascript – Selenium WebDriver点击隐藏元素

javascript – Selenium WebDriver点击隐藏元素

嗨,我想知道如何使用Selenium WebDriver点击隐藏元素和/或禁用元素.

我知道用硒1我可以这样做如下:

selenium.click(id="idOfHiddenField");

并且这将工作,但是与硒2(WebDriver),这不是.我不想使用jquery来启用或显示隐藏的字段或JavaScript.这是因为大多数测试都在使用xpath.

或者我只需要留下旧的硒,让你点击隐藏的领域?

解决方法

有一个更简单的方法来解决问题使用JavascriptExecutor.

例如:

document.getElementsByClassName('post-tag')[0].click();

上述JavaScript将点击此页面右上方的“Selenium”标签(旁边的问题),即使它被隐藏(假设).

所有你需要做的是通过JavascriptExecutor接口发出这个JS指令,如下所示:

(JavascriptExecutor(webdriver)).executeScript("document.getElementsByClassName('post-tag')[0].click();");

这将使用JS沙箱和综合点击事件来执行点击操作.虽然它破坏了WebDriver用户活动模拟的目的,但是您可以将其用于您的情况下,在您的情况下很好的效果.

javascript – 如何使用Selenium WebDriver访问动态添加的iframe?

javascript – 如何使用Selenium WebDriver访问动态添加的iframe?

我有一个没有iframe的页面,然后通过 JavaScript在点击一个锚点后添加一个iframe.

我遇到的问题是,当使用driver.switch_to_frame(x)切换到帧时,我仍然可以找到我的任何内容.

我已经尝试循环遍历使用driver.find_elements_by_tag_name(‘iframe’)找到的帧,并检查每个帧我期望找到的类,但没有这样的运气.

driver.switch_to_active_element()也没有给我正确的iframe.

我不确定iframe内容是否只是无法访问,因为JS DOM更改未反映在Selenium从驱动程序中看到的内容中.我已经为其他iframe完成了同样的过程而没有任何问题,但是这个只是不合作.以下是我正在处理的简化版本.

在JS之前:

<html>
    <body>
      <a onclick="jsmagic">load iframe</a>
    </body>
</html>

JS之后:

<html>
    <body>
      <iframe><div>Message</div></iframe>
      <a onclick="jsmagic">load iframe</a>
    </body>
</html>

Python WebDriver尝试:

driver.switch_to_frame(0)
driver.find_elements_by_class_name('modal')
driver.switch_to_default_content()

我也尝试了类似的变体:

frame = driver.find_elements_by_tag_name('iframe')[0]
driver.switch_to_frame(frame)
driver.find_elements_by_class_name('modal')

我曾尝试使用driver.execute_script来访问该对象,但获取内容超出了我的范围. Firefox控制台命令无法通过Selenium运行.

解决方法

这似乎是一个时间问题,我最终得到了以下几点:
def modal_must_show(self,string):
  for _ in range(12):
    for frame in self.driver.find_elements_by_tag_name('iframe'):
      try:
        if not frame.is_displayed():
          continue
        if frame.parent.page_source.find(string):
          return
      except:
        pass
  assert False,'Modal missing string'

今天关于如何使用JavaScript单击Selenium WebDriver中的元素selenium用js点击元素的介绍到此结束,谢谢您的阅读,有关java – 如何点击Selenium WebDriver中的隐藏元素?、Java 如何强制Selenium WebDriver单击当前不可见的元素?、javascript – Selenium WebDriver点击隐藏元素、javascript – 如何使用Selenium WebDriver访问动态添加的iframe?等更多相关知识的信息可以在本站进行查询。

本文标签: