【发布时间】:2019-07-29 21:18:18
【问题描述】:
当我点击供应商框时,它会弹出一个选项列表,您可以滚动到这些选项列表或键入您想要的内容并选择。该框具有明确的 id,并且在实际页面上绝对可以交互,但是当我运行测试时,它只是说元素不可交互。
我已经阅读了其他线程并尝试使用 Actions 移动到元素并显式等待,当我完成时,抛出了一个错误“等待元素的可见性”。 //尝试移动到元素
Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.id(TransactionUIConstants.VENDOR_SEARCH)));
WebDriverWait wait = new WebDriverWait(driver, Page.TIMEOUT);
wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.id("vendor"))));
wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.id("vendor"))));
//What I'm trying to click
driver.findElement(By.id("vendor")).click();
driver.findElement(By.id("vendor")).sendKeys("Amazon");
driver.findElement(By.id("vendor")).sendKeys(Keys.ENTER);
这是检查选项卡中的描述:
input name="" id="vendor" type="text" autocomplete="nope" placeholder="Select option" tabindex="0" class="multiselect__input" style="width: 0px; position: absolute;内边距:0px;"
【问题讨论】:
-
最后 3 行中的哪一行给出了关于不可交互的错误?还有哪个浏览器?我想我曾经通过将密钥发送到窗口或文档来解决此类问题。但是您是否需要发送密钥,或者如果您找到正确的文本并单击正确的选项同样好?
-
因为假设第一次点击有效,你可以点击 xpath 找到的元素之后 //option[contains(text(), "Amazon")]
-
这是第一行抛出错误,我试过只发送键而不点击,它也会抛出同样的错误。
-
所以也许供应商真的是不可交互的,手动点击对它里面的东西做了一些事情。我想知道(尽管有些浏览器不喜欢你点击看不到的东西)javabeginnerstutorial.com/selenium/… 方法 1 第一个代码块的方法是否适合你。
-
我得到了一些帮助,显然它是另一个库的一部分,所以我们最终不得不这样做:
标签: java selenium-webdriver selenium-chromedriver