我在以下页面:URL
尝试使用以下webelement访问详细信息访问Send Inquiry Now
按钮
element2 = (new WebDriverWait(driver, 10)).until(ExpectedConditions
.visibilityOfElementLocated(By
.xpath("//input[@value='Send Inquiry Now']")));
element2 = driver.findElement(By.xpath("//input[@value='Send Inquiry Now']"));
但是像
那样得到错误Cannot locate an element using By.xpath: //input[@value='Send Inquiry Now']
为什么?
虽然xPath在我尝试使用FirePath时正在查找该元素。
答案 0 :(得分:0)
请尝试以下代码:
WebDriverWait wait = new WebDriverWait(driver, 12);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//input[@value='Send Inquiry Now']")));
driver.findElement(By.xpath("//input[@value='Send Inquiry Now']")).click();
希望它会对你有所帮助。
答案 1 :(得分:0)
以下是您的问题的答案:
以下没有任何wait
的代码块可以在我的终端点击Send Inquiry Now
按钮正常工作:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class Q45166267_Alibaba
{
public static void main(String[] args)
{
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("https://message.alibaba.com/msgsend/contact.htm?spm=a2700.details.maonnacta.dmessage.35f27552gNzeS&action=contact_action&domain=1&id=60449828505&id_f=IDX1eJR5RAxxTgliuJtCjLiQK4LPSRmesIX8tQWEpFLhdsmyylMs_oCrTyvia2XxGXRQ&mloca=main_en_detail&tracelog=tracedetailfeedback&umidToken=Bf9569377c353a415c18b826024db1857");
driver.findElement(By.xpath("//input[@value='Send Inquiry Now' and @type='submit']")).click();
}
}
值得一提的是,网址加载需要一些时间,因此,如果您遇到
ElementNotFound
例外情况,则必须在ExplicitWait
为ExpectedConditions
设置elementToBeClickable
1}}(而不是presenceOfElementLocated
)如下:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Q45166267_Alibaba
{
public static void main(String[] args)
{
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("https://message.alibaba.com/msgsend/contact.htm?spm=a2700.details.maonnacta.dmessage.35f27552gNzeS&action=contact_action&domain=1&id=60449828505&id_f=IDX1eJR5RAxxTgliuJtCjLiQK4LPSRmesIX8tQWEpFLhdsmyylMs_oCrTyvia2XxGXRQ&mloca=main_en_detail&tracelog=tracedetailfeedback&umidToken=Bf9569377c353a415c18b826024db1857");
WebDriverWait wait10 = new WebDriverWait(driver, 10);
WebElement element10 = wait10.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@value='Send Inquiry Now' and @type='submit']")));
element10.click();
}
}
如果这回答你的问题,请告诉我。
答案 2 :(得分:0)
我自己解决了我的问题。
实际上我在iframe里面访问文本区域。然后就在那之后,找到按钮"发送查询按钮"。哪个不在iframe中。
所以我首先使用以下方法切换到默认值:
driver.switchTo().defaultContent();
然后访问"立即发送询问"。哪个成功。