无法使用selenium在网页中找到元素(没有Id)

时间:2017-07-12 10:08:25

标签: html css selenium xpath selenium-webdriver

我一直在尝试访问/定位图片中显示的元素,并尝试了各种方法。 xpath,classname,css但不断收到无法找到该元素的错误。你能帮帮忙吗?

Locating "Choose image"

Attempt1

driver.find_element_by_class_name(".btn.btn-default").send_keys(os.getcwd() + "InputFiles/Error.png")

错误:

enter image description here

Attemp2:

 driver.find_element_by_xpath("//div[@class='upload-btn__wrapper']").send_keys(os.getcwd() + "InputFiles/Error.png")

错误: enter image description here

5 个答案:

答案 0 :(得分:1)

这个xpath应该可以工作。

"//div[@class='upload-btn__wrapper']/button"

希望这会有所帮助。感谢。

答案 1 :(得分:0)

希望它对你有所帮助。如果您需要进一步的帮助,请与我们联系。

driver.find_element_by_xpath(" // DIV [@class ='上传-btn__wrapper']&#34)

答案 2 :(得分:0)

我建议使用Xpath以下,因为它依赖于你的Text,因此按钮文本的任何更改都会导致测试失败,这非常有意义。

//button[normalize-space(text())='Choose image']

在使用该元素执行任何操作之前,还要使用显式等待。

new WebDriverWait(driver, time).until(ExpectedConditions.visibilityOf(By.xpath("//button[normalize-space(text())='Choose image']")));
WebElement chooseImageButton=driver.findElement(By.xpath("//button[normalize-space(text())='Choose image']"));
chooseImageButton.click();

答案 3 :(得分:0)

尝试以下解决方案:

driver.findElement(By.xpath("//div[contains(@class,'margin-bottom')]")).findElement(By.xpath("//div[contains(@class,'upload-btn__wrapper')]")).click();

解释:我从“ margin-bottom ”div类的父div导航,然后到达我们想要找到的子div,这是“上传-btn__wrapper ”。

如果有问题,请告诉我。

答案 4 :(得分:0)

您也可以使用css选择器点击它。希望这对你有用。 driver.findElement(By.cssSelector(".btn.btn-default")).click();