首页 文章

Selenium WebDriver:无法定位元素(C#)

提问于
浏览
1

我正在尝试使用C#和Selenium自动化Paypal提款 . 应用程序使用提供的凭据登录到Paypal,然后单击“转移资金”链接,然后显示弹出窗口(看起来像是iframe) . 我的问题是我无法点击弹出窗口中的任何元素,我已经尝试了所有可以找到的建议 .

以下是表单和底层html的屏幕截图:

paypal form

我正在尝试点击“发件人”下拉菜单以及我尝试过的其他内容:

driver.FindElement(By.XPath("//*[@id=\"selection-container\"]/form/section/table/tbody/tr[2]/td/div[1]/div[1]")).Click();

((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].hidden = false;", driver.FindElement(By.XPath("//*[@id=\"selection-container\"]/form/section/table/tbody/tr[2]/td/div[1]/div[1]")));

但要么得到'无法定位元素'或'元素不可见'错误 . 如何进入弹出窗口中的“From”输入元素? (如果你使用的是paypal,你也可以登录并查看弹出窗口,如果需要的话) .

3 回答

  • 0

    您需要先切换到 iframe

    IWebElement frame = driver.FindElement(By.TagName("iframe")); // locate the iframe element
    driver.SwitchTo().Frame(frame);
    
    driver.FindElement(By.XPath("//*[@id=\"selection-container\"]/form/section/table/tbody/tr[2]/td/div[1]/div[1]")).Click();
    

    并切换回来

    driver.SwitchTo().DefaultContent();
    
  • 2

    尝试

    [FindsBy(How = How.CssSelector, Using = "div[class$='source-dropdown']")]
    public IWebElement _ddSource;
    

    '$' 指定属性的结尾,如果类的结尾是 source-dropdown

  • 0

    首先你需要切换到那个iframe . 使用以下代码:

    IWebElement frame = driver.FindElement(By.CssSelector("iframe[src ='/moneytransfer']");
    driver.SwitchTo().Frame(frame);
    

    现在您可以使用此cssSelector单击该弹出窗口:

    div[class$='source-dropdown']
    

相关问题