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

时间:2016-08-04 10:14:26

标签: c# selenium selenium-webdriver paypal

我正在尝试使用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 :(得分:2)

您需要先切换到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();

答案 1 :(得分:0)

尝试

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

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

答案 2 :(得分:0)

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

// ReSharper disable All

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

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