gpt4 book ai didi

Selenium WebDriver - 能够在 IFrame 中定位对象,但 Click() 不准确

转载 作者:行者123 更新时间:2023-12-02 02:05:20 25 4
gpt4 key购买 nike

被测应用程序为功能生成一个 IFrame。通过使用以下任何定位器策略、XPATH、CSS 或 LinkText,我能够在 IFrame 上完美定位元素。但是,当我执行 Click() 时,代码会点击不同的位置。例如,屏幕上有一个有 4 个答案的多项选择题,脚本应该点击第 3 个选项,但最终却点击了第 1 个。在根本无法点击按钮的情况下,问题要严重得多。 Click() 事件不会抛出任何错误。我曾尝试使用 Action() 接口(interface),但没有成功。 Action.Perform() 抛出屏幕元素在 HTML 之外的错误。有人可以帮忙吗?

我正在使用 Selenium WebDriver (.NET) 2.31 版和 Firefox 19.0.2 以及 .NET Framework 4.0。

driver.SwitchTo().Frame(2);
System.Threading.Thread.Sleep(20000);
IWebElement Answer1 = driver.FindElement(By.XPath(".//*[@id='question-reload']/div[3]/div[2]/ul/li[1]/a"));
Answer1.Click();
driver.FindElement(By.LinkText("Find the embassy")).Click();
IWebElement Next = driver.FindElement(By.XPath(".//*[@id='next']/b/i"));
int X = Next.Location.X;
int Y = Next.Location.Y;
Next.Click();

for (int i = 0; i < 59; i++)
{
System.Threading.Thread.Sleep(3000);
IWebElement newNext = driver.FindElement(By.XPath(".//*[@id='next']/b/i"));
newNext.Click();
}

最佳答案

好吧...我能够通过注入(inject) JavaScript 来单击“下一步”按钮来解决问题。代码如下:

System.Threading.Thread.Sleep(1000);               
IJavaScriptExecutor exec = (IJavaScriptExecutor)driver;
StringBuilder locator = new StringBuilder();
locator.Append("document.getElementById('next').click();");
exec.ExecuteScript(locator.ToString());

非常感谢 this piece以及所有参与的人!!

关于Selenium WebDriver - 能够在 IFrame 中定位对象,但 Click() 不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15352351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com