脚本:
登录www.flipkart。com,并在成功登录后从“电子产品”中选择“三星”。现在,我需要滚动到页面底部,从左侧,我需要点击可用性来选择“排除股票期权”,但点击可用性,我会收到消息
失败:Test_Samsung org。openqa。硒。WebDriverException:元素在点(119,9)处不可单击。其他元素将收到点击:
//class for successful flipkart login
public class Flipkart_Login
{
@FindBy(xpath="//a[text()='Log In']") WebElement Login_Click;
@FindBy(xpath="//input[@class='_2zrpKA' and @type='text']") WebElement Enter_Email;
@FindBy(xpath="//input[@class='_2zrpKA _3v41xv' and @type='password']") WebElement Enter_Pass;
@FindBy(xpath="//button[@type='submit' and @class='_3zLR9i _1LctnI _36SmAs']") WebElement Login_Button;
@FindBy(xpath="//span[text()='Please enter valid Email ID/Mobile number']") WebElement Blank_Email;
@FindBy(xpath="//span[text()='Please enter Password']") WebElement Blank_Pass;
public void Valid_Login()
{
Login_Click.click();
Enter_Email.sendKeys("abc@gmail.com");
Enter_Pass.sendKeys("abcde");
Login_Button.click();
}
}
//class for choosing Samsung from Electronics menu and clicking Availability
public class Flipkart_Electronics_Samsung_Mobile
{
@CacheLookup
@FindBy(xpath="//a[@title='Electronics']//span[text()='Electronics']") WebElement Electronics_Menu;
@CacheLookup
@FindBy(xpath="//a[@title='Samsung']//span[text()='Samsung']") WebElement Samsung_Mobile_Click;
@CacheLookup
@FindBy(xpath="//div[@class='_3QT2gR _1AgMas']//div[text()='Availability']") WebElement Availability;
@CacheLookup
@FindBy(xpath="//div[@class='_1p7h2j']") WebElement Exclude_Out_Of_Stock;
public void Choose_Samsung_Mobile()
{
WebDriverWait wait = new WebDriverWait(driver, 30);
Actions act = new Actions(driver);
act.moveToElement(Electronics_Menu).perform();
act.click(wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@title='Samsung']//span[text()='Samsung']")))).build().perform();
WebElement Availability = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='_3QT2gR _1AgMas']//div[text()='Availability']")));
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].scrollIntoView(true);", Availability);
Availability.click();
}
}
//class which calls the methods from above two classes
public class Flipkart_Electronics_Samsung_Search
{
WebDriver driver;
@Test
public void Test_Samsung()
{
driver = BrowserFactory.getBrowser("Firefox");
driver.get(DataProviderFactory.getConfig().getURL());
Flipkart_Login login = PageFactory.initElements(driver, Flipkart_Login.class);
login.Valid_Login();
Flipkart_Electronics_Samsung_Mobile Samsung = PageFactory.initElements(driver, Flipkart_Electronics_Samsung_Mobile.class);
Samsung.Choose_Samsung_Mobile();
}
}
元素在点(119,9)处不可单击。其他元素将收到click:命令持续时间或超时:133毫秒
它清楚地表明,我们想要点击的元素被另一个元素div隐藏,在本例中,它将接收点击。
我认为这是问题的UI不应该隐藏元素,但你可以尝试几件事情: 1.最大化浏览器的窗口从网络驱动程序,看看元素是否仍然隐藏
driver.manage().window().maximize()
使用JavaScript单击元素
WebElement element = driver.findElement(By.<locator>);
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click()", element)
您可以尝试点击使用JavascriptExecator
所以您应该替换下面的行:-
js.executeScript("arguments[0].scrollIntoView(true);", Availability);
Availability.click();
到
js.executeScript("arguments[0].click()", Availability);
事实上,我的元素是放在其他一些天后可能隐藏它,但我如何使点击事件击中我的textarea?
我有一个web应用程序,我正试图为其编写selenium测试,但我遇到了Chrome驱动程序的问题。有一个向导类型的界面,用户可以使用它来填写表单。有一个按钮可以添加一个带有几个设置的行。我已经用黑色概述了这一点。蓝色矩形显示按钮的可点击区域。这个矩形的中间没有重叠其他任何东西。 问题是有一个巨大的div包含整个屏幕和Chrome说这个div将获得点击。那么,我该怎么绕过这件事呢?这似乎不是正确的
WebDriverException:元素在点(36,72)处不可单击。其他元素将收到click:...命令持续时间或超时:393毫秒 如果我使用,我不会收到任何警告。
我有一个web应用程序,我试图为它编写selenium测试,但我遇到了Chrome驱动程序的问题。有一个向导类型的界面,用户可以使用它来填写表单。有一个按钮可以添加具有几个设置的行。我已经用黑色概述了这一点。蓝色矩形显示按钮的可单击区域。这个矩形的中间没有重叠其他任何东西。 问题是有一个巨大的div包含整个屏幕,Chrome说这个div会得到点击。那么,我该怎么解决这个问题呢?我不能点击这个按钮,
问题内容: 我正在尝试使用基于selenium的Katalon Studio进行一些测试。在我的一项测试中,我必须在文本区域内编写。问题是我得到以下错误: 实际上,我的元素放置在其他可能隐藏它的diva里面,但是如何使click事件击中我的textarea? 问题答案: 可能是由于不同的因素造成的。您可以通过以下任一过程解决它们: 由于存在JavaScript或AJAX调用而无法单击元素 尝试使用