Невозможно нажать кнопку, используя Selenium Javasript - PullRequest
2 голосов
/ 05 июня 2019

Я не могу нажать кнопку входа в систему, мой код правильный и нет фрейма или окна:

const { Builder, By, Key, until } = require('selenium-webdriver');
const { expect } = require('chai');

describe('SignupTest', () => {
    const driver = new Builder().forBrowser('chrome').build();

    it('signup with valid email and valid password', async () => {
        await driver.get('https://ca.letgo.com/en');
        const loginButton = driver.findElement(By.xpath("//button[contains(.,'Log In')]"));
        driver.execute("arguments[0].click()",loginButton)
        //await driver.findElement(By.xpath("//button[contains(.,'Log In')]")).click();
        //name=email
        //name=password
        //name=name
        //xpath=//span[contains(.,'Sign Up')]
        //await driver.sleep(20000);
    });

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Если ваша цель - использовать JavaScript для запуска средств селена.Я предлагаю вам использовать Nightwatch JS, который использует селен и узел JS.

В вашем случае вы можете сделать следующее.

WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id<locator>));

или

wait.until(ExpectedConditions.elementToBeClickable(By.id<locator>));

Вытакже можно проверить видимость перед нажатием isDisplay().Если он печатает true, тогда выполните действие щелчка.

0 голосов
/ 05 июня 2019

Элемент с текстом Вход фактически находится внутри тега child <span> (тега <button>), и вы можете использовать любой из следующих Стратегии локатора :

  • Использование CSS_SELECTOR:

    button[data-test='login'][data-testid='login']>span
    
  • Использование XPATH:

    //span[text()='Log In']
    

Примечание : вам нужно вызвать WebDriverWait при попытке вызвать click() для элемента с текстом Log .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...