【问题标题】:How I can use selenium to click at web element of this javascript:_doPostBack()我如何使用 selenium 点击这个 javascript:__doPostBack() 的 webelement
【发布时间】:2021-02-25 23:22:43
【问题描述】:

我想知道如何使用 selenium 在此 javascript:_doPostBack() 上单击 web 元素“automation_quiz”。

以下是来自html页面的sn-p:

<a id="ctl00_Content_tgv_ctl03_lbtCaption" title="click to launch automation_quiz" href="javascript:__doPostBack('ctl00$Content$tgv$ctl03$lbtCaption','')">automation_quiz</a>

我使用 firefox Xpath-finder 找不到“automation_quiz”的 Xpath。

【问题讨论】:

  • 这是来自 html 页面的 sn-p:automation_quiz
  • //a[@id="ctl00_Content_tgv_ctl03_lbtCaption"]
  • //a[text()='automation_quiz']

标签: c# selenium xpath css-selectors webdriverwait


【解决方案1】:

所需的元素是启用了JavaScript 的元素,因此要在元素上使用Click(),您必须为ElementToBeClickable() 诱导WebDriverWait,您可以使用以下Locator Strategies 之一:

  • LinkText:

    new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementToBeClickable(By.LinkText("automation_quiz"))).Click();
    
  • CssSelector:

    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("a[title='click to launch automation_quiz'][href*='Content'][id$='lbtCaption']"))).Click();
    
  • XPath:

    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//a[@title='click to launch automation_quiz' and text()='automation_quiz']"))).Click();
    

参考文献

您可以在以下位置找到一些相关的详细讨论:

【讨论】:

  • 它使用 CssSelector 模式工作!非常感谢!
  • @jeff_hqh 好消息!!!很高兴能帮到你!!!请accept answer 点击我的answer 旁边的空心刻度线,它就在 votedown 箭头下方,这样刻度线就会变成 绿色.
【解决方案2】:

很遗憾,您无法通过使用 Selenium 启动的 JavaScript 方法找到 Web 元素。同样不幸的是,目前没有替代 Selenium 来导航动态内容。检查其他网络元素搜索方法的文档。如果你不能通过 Xpath 找到,也许你可以使用 html ID 或类似的东西来定位。如果没有,请尝试使用 ChromeDriver 而不是 Firefox。我在 chrome 上使用 Xpath 时遇到的麻烦要少得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多