Java 使用Selenium单击div标记中具有属性角色的按钮
如何使用下面的HTML标记单击Java 使用Selenium单击div标记中具有属性角色的按钮,java,html,selenium,button,Java,Html,Selenium,Button,如何使用下面的HTML标记单击按钮 <div class="_1WZqU PNlAR" role="button">OK</div> 我收到以下错误消息: 选择器无效:不允许使用复合类名 尝试使用,按钮标记在HTML中不存在 //div[text()='OK'] 使用此代码 driver.findElement(By.xpath("//div[text()='OK']")).click(); 您还可以使用JavascriptExecutor WebElement O
按钮
<div class="_1WZqU PNlAR" role="button">OK</div>
我收到以下错误消息:
选择器无效:不允许使用复合类名
尝试使用,按钮标记在HTML中不存在
//div[text()='OK']
使用此代码
driver.findElement(By.xpath("//div[text()='OK']")).click();
您还可以使用JavascriptExecutor
WebElement OKBtnElement = driver.findElement(By.xpath("//div[text()='OK']"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", OKBtnElement );
你应使用:
希望这对你有帮助 添加HTML源代码,格式化代码,添加更多信息
不起作用的内容
的含义。是否出现异常或元素未被单击?是否尝试使用javascript单击?实际出现的错误是因为您在By.className()
中放置了两个类名。您必须选择其中一个类或将其转换为CSS选择器,By.cssSelector(“.\u 1WZqU.PNlAR”)
。很好地抓住了div
标记!我认为不应该使用JavascriptExecutor它不像人类的点击。。。但在某些情况下,这是不可避免的。。。OP应该首先尝试WebDriverWait
…IMO@MosheSlavin非常正确地提到,为了模仿人类相似的行为,应该首先尝试强大、经验证的click()
,基于javascript的click()
应该是最后的选择。否则,这些答案对未来的读者将毫无用处,并且很容易遭到否决。WebDriverWait是不可避免的,因为元素显然是动态生成的元素。
WebElement OKBtnElement = driver.findElement(By.xpath("//div[text()='OK']"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", OKBtnElement );
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[text()='OK']")));
element.click();