【问题标题】:How to click on a button inside a popup as per the html through SeleniumWebdriver and Java如何通过 Selenium Webdriver 和 Java 根据 html 单击弹出窗口内的按钮
【发布时间】:2018-08-20 13:39:52
【问题描述】:
我尝试点击像 imagen 这样的按钮。
无法使用类或 xpath
这是按钮
这是从此按钮进行的检查。
这是试图点击按钮的代码:
driver.findElement(By.xpath("/html/body/div[10]/button")).click();
这是之前的 xpath:
driver.findElement(By.xpath("/html/body/div[10]"));
谁能帮帮我!!!
【问题讨论】:
标签:
java
selenium
selenium-webdriver
xpath
webdriverwait
【解决方案1】:
页面中的每个简单更改都会导致您的代码停止运行,请尝试始终使用 class 或 id 并导航到它的兄弟/父节点。
你可以通过两种方式做到这一点
1.通过使用CssSelector(在DevTools中右键单击元素->复制->复制选择器)
driver.FindElement(By.CssSelector("CopiedText")).Click()
2.通过使用 XPath 并通过其父级访问它(您的案例示例)
driver.FindElement(By.xpath("//div[@class='advertising-layer']/button")).Click()
【解决方案2】:
我在访问对话框中的按钮时遇到了类似的问题。我尝试使用 XPath,id,它不起作用,但它适用于 CSS 选择器。
通过使用 CSS 选择器,我使 selenium webdriver 单击按钮,从对话框的下拉列表中选择一个值,在文本框中键入一个值。
我不确定为什么它完全适用于 CSS 选择器而不适用于 XPath。如果有人对此有描述,我将不胜感激。
如果您想获取特定元素的 CSS 选择器,请按照以下步骤操作
让我知道这是否适合您。
【解决方案3】:
根据您共享的 HTML,在您必须诱导 WebDriverWait 的所需元素上调用 click(),您可以使用以下解决方案:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("/div[@class='advertising-mask']//button"))).click();