本文的目的是介绍如何使用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点击元素)
- java – 如何点击Selenium WebDriver中的隐藏元素?
- Java 如何强制Selenium WebDriver单击当前不可见的元素?
- javascript – Selenium WebDriver点击隐藏元素
- javascript – 如何使用Selenium WebDriver访问动态添加的iframe?
如何使用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中的隐藏元素?
我的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单击当前不可见的元素?
我在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点击隐藏元素
我知道用硒1我可以这样做如下:
selenium.click(id="idOfHiddenField");
并且这将工作,但是与硒2(WebDriver),这不是.我不想使用jquery来启用或显示隐藏的字段或JavaScript.这是因为大多数测试都在使用xpath.
或者我只需要留下旧的硒,让你点击隐藏的领域?
解决方法
例如:
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?
我遇到的问题是,当使用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?等更多相关知识的信息可以在本站进行查询。
本文标签: