GVKun编程网logo

selenium-无法单击模态内的元素(selenium无法点击元素)

16

对于selenium-无法单击模态内的元素感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍selenium无法点击元素,并为您提供关于ElementClickInterceptedExcepti

对于selenium-无法单击模态内的元素感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍selenium无法点击元素,并为您提供关于ElementClickInterceptedException:消息:拦截了元素单击:Selenium和Python无法单击元素、Java Selenium-POM-html xpath-没有这样的元素:无法找到元素、java – Selenium单击“成功”元素,但实际上并没有单击它、Java 如何强制Selenium WebDriver单击当前不可见的元素?的有用信息。

本文目录一览:

selenium-无法单击模态内的元素(selenium无法点击元素)

selenium-无法单击模态内的元素(selenium无法点击元素)

我正在使用Selenium和Java,无法单击模式内的元素。场景是这样的:单击框架内的项目后,它会打开一个模态,我需要单击此模态内的一个元素,但我无法获取它。

我已经尝试过:

js.executeScript("document.getElementById(''saveexit'').scrollIntoView(true);");

我也尝试过使用switchTo()这样:

while (itr.hasNext()) {    String popup =  itr.next();    System.out.println("itr: " + popup);    driver.switchTo().window(popup);}

这是我的模态的HTML:

<div>    <div>        <div>            ...        </div>        <div>            <form id="formTo">                <div>                    ...                </div>                <div></div>                <input ...>                <div>                    <div>                        ...                    </div>                    <div>                        ...                    </div>                </div>                <div>                    <div>                        ...                    </div>                    <div>                        ...                    </div>                </div>                <div></div>                <div>                     ...                </div>             </form>         </div>        <div></div>        <div>            <div>                 <div>                    <buttonid="saveexit" type="button">SAVE AND EXIT</button>                </div>                <div>                    ...                </div>            </div>        </div>    </div></div>

这是从firefox开发工具获取的CSS路径:

html.no-touch body div.remodal-wrapper.remodal-is-opened div.modaliAdesione.remodal.remodal-is-initialized.remodal-is‌​-opened div.modal-dialog div.modal-content.modal-custom-content div.modal-footer div.row.text-center div.col-md-6.col-sm-6.col-xs-12 button#saveexit.btn.modal-button.full-btn

永远找不到对象。

  • 问题1:如果元素在模态内部必须进行不同的管理?
  • 问题2:如何最后单击按钮 saveexit 起作用?

这里共享了html的代码片段:https :
//codeshare.io/arLW9q

这是Java代码:

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"saveexit\"]")))

我也尝试过:

cssSelector: #saveexitcssPath: html.no-touch body div.remodal-wrapper.remodal-is-opened div.modaliAdesione.remodal.remodal-is-initialized.remodal-is-opened div.modal-dialog div.modal-content.modal-custom-content div.modal-footer div.row.text-center div.col-md-6.col-sm-6.col-xs-12 button#saveexit.btn.modal-button.full-btnxpath: //*[@id="saveexit"]

请注意:如果我document.getElementById(''saveexit'').click();从浏览器的控制台运行,它将正常运行

答案1

小编典典

我在脚本中使用jquery修复了它;

这是行代码:

js.executeScript("$(''#saveexit'').trigger(''click'');");

希望以后能对某人有所帮助。

我不知道为什么普通的javascript无法正常工作…

ElementClickInterceptedException:消息:拦截了元素单击:Selenium和Python无法单击元素

ElementClickInterceptedException:消息:拦截了元素单击:Selenium和Python无法单击元素

我试图单击“所有主题”和“所有状态”复选框,然后搜索结果。当我运行脚本时,会打开一个Chrome窗口,大小为1036x674。

如果我不理会窗口,则会出现元素点击拦截错误。如果我最小化或最大化窗口,则脚本可以正常工作。

我正在使用Selenium 3.141.0,chrome 76,chromedriver 76和python 3.6

chromedriver_path = r"C:\Users\path\to\chromedriver.exe"
browser = webdriver.Chrome(executable_path=chromedriver_path)
url = "http://www.ncsl.org/research/transportation/autonomous-vehicles-legislative-database.aspx"

topics_xpath = "//*[@id=\"dnn_ctr81355_StateNetDB_UpdatePanel1\"]/div[1]/div[2]/span/label"
states_xpath = "//*[@id=\"dnn_ctr81355_StateNetDB_UpdatePanel1\"]/div[2]/div[2]/span/label"
browser.get(url)
time.sleep(30)

elem = browser.find_element_by_xpath(topics_xpath)
elem.click()
time.sleep(5)
elem = browser.find_element_by_xpath(states_xpath)
elem.click()

但是我得到这个错误:

ElementClickInterceptedException:消息:拦截了元素单击:
元素

将要单击的CheckBox在我要单击的复选框的正下方。

Java Selenium-POM-html xpath-没有这样的元素:无法找到元素

Java Selenium-POM-html xpath-没有这样的元素:无法找到元素

看起来您的班级名称是随机生成的-您可以通过从不同的浏览器重新访问同一页面来进行检查(或者您可以尝试使用隐身方式)。如果确实如此,则需要另一种使用element的方法。一些例子:

  1. 如果使用此Sign Up按钮-使用xPath并在该元素中查找文本
  2. 考虑是否可以在不使用与UI(或任务的一部分)交互的情况下解决您的任务。阅读有关facebook API的信息,如果可能,请使用它代替UI。这样可以节省您很多时间,并避免麻烦。

java – Selenium单击“成功”元素,但实际上并没有单击它

java – Selenium单击“成功”元素,但实际上并没有单击它

我有一个单击按钮的方法,但是,当它运行时,selenium会在成功点击时返回结果,而实际上,实际上没有点击按钮.如果我多次运行测试,偶尔会按预期点击它.我将我的测试框架设置为隐式等待大约15秒,我已经设置了明确的等待这个元素,但仍然看到相同的问题.当我执行< element> .isdisplayed()时,始终会找到该元素.我将.click放在一个while循环中,点击它几次,大部分时间都有效,有时候测试失败了.是否可以在单击按钮之前使用if语句检查元素是否实际显示?

我试过了:

if(!element.isdisplayed){
    element.click
}

这是我遇到问题的按钮:

<button>
<div>New List</div>
</button>

这是我的方法:

public marketing_lists_page navigatetoNewListPage() throws Throwable {
    try {
        int x = 0;
        while(x < 5) {
            newListBtn.click();
            x++;
        }
       //newListPageHeader.isdisplayed();
    } catch (NoSuchElementException e){
        logs.errorDetails("Could not navigate to New List Page");
        Assert.fail();
    }
    return this;
}

解决方法

看起来元素最初未启用或无法点击.要回答你的问题,是的,你可以使用明确的等待并等待元素可点击:
webdriverwait wait = new webdriverwait(driver,timeOut);
wait.until(ExpectedConditions.elementToBeClickable(locator));

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

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

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

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库)。

解决方法

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

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

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

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

关于selenium-无法单击模态内的元素selenium无法点击元素的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ElementClickInterceptedException:消息:拦截了元素单击:Selenium和Python无法单击元素、Java Selenium-POM-html xpath-没有这样的元素:无法找到元素、java – Selenium单击“成功”元素,但实际上并没有单击它、Java 如何强制Selenium WebDriver单击当前不可见的元素?等相关知识的信息别忘了在本站进行查找喔。

本文标签: