我无法单击登录按钮,我的代码正确,并且没有iframe或窗口:
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);
});
答案 0 :(得分:0)
文本为登录的元素实际上位于 child <span>
标签的{em> child 标签中,您可以使用其中一个以下Locator Strategies中的
使用<button>
:
CSS_SELECTOR
使用button[data-test='login'][data-testid='login']>span
:
XPATH
注意:当您尝试在元素上使用文本登录来调用//span[text()='Log In']
时,需要引发 WebDriverWait 。
答案 1 :(得分:0)
如果您的目标是使用javascript来运行硒手段。我建议你 使用使用硒和节点js的守夜js。
根据您的情况,您可以执行以下操作。
WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id<locator>));
或
wait.until(ExpectedConditions.elementToBeClickable(By.id<locator>));
您还可以在使用isDisplay()
单击之前检查可见性。如果显示为true,则执行单击操作。