【问题标题】:Unable to click on an element though lt is available on the Web Page尽管网页上提供了 lt,但无法单击元素
【发布时间】:2019-08-09 21:30:11
【问题描述】:

尽管 Web 驱动程序能够找到元素,但无法单击该元素。

已应用隐式等待。此外,尝试显式等待,但当显式等待获取错误元素未附加到页面时

WebElement sales_order_doc_type_dropdown = driver.findElement(By.xpath("//input[@id='WD67']"));
sales_order_doc_type_dropdown.click();

元素的 HTML 代码

<input id="WD67" ct="CB" lsdata="{1:'26.4ex',5:true,8:'WD68',9:'1'}" lsevents="{Select:[{ResponseData:'delta',ClientAction:'submit'},{}]}" type="text" autocomplete="off" tabindex="0" ti="0" class="urEdf2TxtEnbl lsEdfLeftBrdRadius lsEdf3TxtHlpBtn urBorderBox lsControl--explicitwidth" readonly="" value="" style="vertical-align:top;width:26.4ex;">

【问题讨论】:

    标签: java selenium-webdriver xpath css-selectors webdriverwait


    【解决方案1】:

    所需的元素是一个动态元素,因此对于click(),您必须为elementToBeClickable() 诱导WebDriverWait 元素,您可以使用以下Locator Strategies 之一:

    • cssSelector:

      new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input[id^='WD'][ct='CB'][lsevents*='ClientAction']"))).click();
      
    • xpath:

      new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[starts-with(@id, 'WD') and @ct='CB'][contains(@lsevents, 'ClientAction')]"))).click();
      

    【讨论】:

    • 当尝试显式等待时出现错误 - 过时的元素引用:元素未附加到页面文档
    • 我使用 Actions 来点击,它正在工作 Actions action = new Actions(driver); action.moveToElement(sales_order_doc_type_dropdown); action.click().perform();
    猜你喜欢
    • 1970-01-01
    • 2017-03-30
    • 2021-07-23
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 2018-11-30
    • 2018-06-16
    • 1970-01-01
    相关资源
    最近更新 更多