【问题标题】:How To set aria-pressed="true" in Selenium?如何在 Selenium 中设置 aria-pressed="true"?
【发布时间】:2018-07-08 22:14:37
【问题描述】:

HTML:-

<ion-segment-button class="segment-button" role="button" tappable value="sign_in" aria-pressed="false">

硒代码:-

WebDriver driver = new ChromeDriver();
driver.get("URL");
WebElement Login =driver.findElement(ByClassName.className("segment-button"));
Login.submit();

如何在 Selenium 中设置 aria-pressed="true"??

【问题讨论】:

  • 你的 xpth 代码 +"并以(@aria-pressed, 'true')]"开始
  • @Hiten 你能解释一下吗?

标签: unit-testing selenium automated-tests selenium-chromedriver selenium-ide


【解决方案1】:

在 selenium 中没有直接设置元素属性的方法。但是我们可以使用 javascript Executor 来设置元素的属性,如下所示。

WebDriver driver = new ChromeDriver();
driver.get("URL");
WebElement Login =driver.findElement(ByClassName.className("segment-button"));
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("arguments[0].setAttribute('aria-pressed',true);",Login);

【讨论】:

  • 我得到 Error 在这里我尝试解决它。​​
【解决方案2】:

简短的回答是不要。除非您真的知道自己在做什么并了解该站点,否则不要这样做。使用 JS 快捷方式强制元素上的值会导致站点必须处理此用户流的所有事件,并且您可能会使页面处于错误状态。没有用户会在页面上运行 JS 以使其处于所需状态……您的脚本也不应该。

正确的做法是从用户的角度弄清楚这是如何设置的。我必须按下哪些按钮等才能获得所需的设置?一旦你弄清楚了,编写 Selenium 代码来按下这些按钮等,你就会得到想要的结果。

【讨论】:

  • @DebanjanB 我知道区别,这是一个答案。答案并不总是准确地回答 OP 的要求。有时它会提供建议或替代方法。见the XY problem。有时 OP 试图做的不是一个好习惯。发生这种情况时,我们应该提供替代方案并解释为什么他们的要求不是一个好的做法。
  • 您需要从tour 开始,它明确表示提出问题,获得答案,不要分心
  • @DebanjanB 好的...阅读“回答问题”下的how to answerMake sure your answer provides that – or a viable alternative.,我在这里做的。还有The answer can be “don’t do that”, but it should also include “try this instead”,我在这里也做过。还有Any answer that gets the asker going in the right direction is helpful,这与你所说的相矛盾。您需要停止将我的回答视为报复。你对规则的理解是错误的。从现在开始,每次您这样做时,我都会向您报告。
  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • @Dez 确实如此。答案是不要按照你的建议去做。而是编写用户更改所需属性的代码。阅读上文。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-31
相关资源
最近更新 更多