如何使用Selenium和Java单击登录按钮/链接数据testid
我正在尝试单击“登录”,但我的Selenium代码不起作用。下面是HTML代码如何使用Selenium和Java单击登录按钮/链接数据testid,java,selenium-webdriver,xpath,css-selectors,webdriverwait,Java,Selenium Webdriver,Xpath,Css Selectors,Webdriverwait,我正在尝试单击“登录”,但我的Selenium代码不起作用。下面是HTML代码 <span class="css-14krylx-text-text-fullPageText-FormFooter">Already have a Times account? <span tabindex="0" data-testid="switch-to-login" class="css-dip6gw-link-link-FormFooter">Log in</span>
<span class="css-14krylx-text-text-fullPageText-FormFooter">Already have a Times account?
<span tabindex="0" data-testid="switch-to-login" class="css-dip6gw-link-link-FormFooter">Log in</span></span>
已经有泰晤士报账户了吗?
登录
到目前为止我尝试了什么,但没有成功
driver.findElement(通过.cssSelector(“[data testid='switch-to-login'))。单击();
driver.findElement(By.xpath(//span[@data testid='switch-to-login'))。单击();
driver.findelelement(通过.cssSelector(“/.css-dip6gw-link-link-FormFooter”)。单击();
还有其他方法吗?所需的元素是动态元素,因此要定位该元素,您必须引导WebDriverWait使该元素可单击,并且您可以使用以下任一方法:
:css选择器
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("span[class$='text-text-fullPageText-FormFooter'] span[class$='link-link-FormFooter'][data-testid='switch-to-login']"))).click();
:xpath
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[contains(@class, 'text-text-fullPageText-FormFooter')]//span[contains(@class, 'link-link-FormFooter') and text()='Log in']"))).click();
:css选择器
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("span[class$='text-text-fullPageText-FormFooter'] span[class$='link-link-FormFooter'][data-testid='switch-to-login']"))).click();
:xpath
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[contains(@class, 'text-text-fullPageText-FormFooter')]//span[contains(@class, 'link-link-FormFooter') and text()='Log in']"))).click();